xref: /aosp_15_r20/external/google-cloud-java/.kokoro/release/publish_javadoc11.sh (revision 55e87721aa1bc457b326496a7ca40f3ea1a63287)
1*55e87721SMatt Gilbride#!/bin/bash
2*55e87721SMatt Gilbride# Copyright 2022 Google LLC
3*55e87721SMatt Gilbride#
4*55e87721SMatt Gilbride# Licensed under the Apache License, Version 2.0 (the "License");
5*55e87721SMatt Gilbride# you may not use this file except in compliance with the License.
6*55e87721SMatt Gilbride# You may obtain a copy of the License at
7*55e87721SMatt Gilbride#
8*55e87721SMatt Gilbride#      http://www.apache.org/licenses/LICENSE-2.0
9*55e87721SMatt Gilbride#
10*55e87721SMatt Gilbride# Unless required by applicable law or agreed to in writing, software
11*55e87721SMatt Gilbride# distributed under the License is distributed on an "AS IS" BASIS,
12*55e87721SMatt Gilbride# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*55e87721SMatt Gilbride# See the License for the specific language governing permissions and
14*55e87721SMatt Gilbride# limitations under the License.
15*55e87721SMatt Gilbride
16*55e87721SMatt Gilbrideset -eo pipefail
17*55e87721SMatt Gilbride
18*55e87721SMatt Gilbrideif [[ -z "${CREDENTIALS}" ]]; then
19*55e87721SMatt Gilbride  CREDENTIALS=${KOKORO_KEYSTORE_DIR}/73713_docuploader_service_account
20*55e87721SMatt Gilbridefi
21*55e87721SMatt Gilbride
22*55e87721SMatt Gilbrideif [[ -z "${STAGING_BUCKET_V2}" ]]; then
23*55e87721SMatt Gilbride  echo "Need to set STAGING_BUCKET_V2 environment variable"
24*55e87721SMatt Gilbride  exit 1
25*55e87721SMatt Gilbridefi
26*55e87721SMatt Gilbride
27*55e87721SMatt Gilbride# work from the git root directory
28*55e87721SMatt Gilbridepushd $(dirname "$0")/../../
29*55e87721SMatt Gilbride
30*55e87721SMatt Gilbrideroot_dir=$(pwd)
31*55e87721SMatt Gilbride
32*55e87721SMatt Gilbridepython3 --version
33*55e87721SMatt Gilbride
34*55e87721SMatt Gilbride# install docuploader package
35*55e87721SMatt Gilbridepython3 -m pip install --require-hashes -r .kokoro/requirements.txt
36*55e87721SMatt Gilbride
37*55e87721SMatt Gilbride# If DOCLET_VERSION is passed in (overriding version in shared-config)
38*55e87721SMatt Gilbrideif [ -n "${DOCLET_VERSION}" ]; then
39*55e87721SMatt Gilbride  doclet_name="java-docfx-doclet-${DOCLET_VERSION}.jar"
40*55e87721SMatt Gilbridefi
41*55e87721SMatt Gilbride
42*55e87721SMatt Gilbridemvn -B -ntp \
43*55e87721SMatt Gilbride  -DtrimStackTrace=false \
44*55e87721SMatt Gilbride  -Dclirr.skip=true \
45*55e87721SMatt Gilbride  -Dorg.slf4j.simpleLogger.showDateTime=true -Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss:SSS \
46*55e87721SMatt Gilbride  -Denforcer.skip=true \
47*55e87721SMatt Gilbride  -Dcheckstyle.skip=true \
48*55e87721SMatt Gilbride  -Dflatten.skip=true \
49*55e87721SMatt Gilbride  -Danimal.sniffer.skip=true \
50*55e87721SMatt Gilbride  -DskipTests=true \
51*55e87721SMatt Gilbride  -Djacoco.skip=true \
52*55e87721SMatt Gilbride  -T 1C \
53*55e87721SMatt Gilbride  install
54*55e87721SMatt Gilbride
55*55e87721SMatt Gilbrideif [[ -z "${MODULE_LIST}" ]]; then
56*55e87721SMatt Gilbride  # Retrieve list of modules from aggregator pom
57*55e87721SMatt Gilbride  modules=($(mvn help:evaluate -Dexpression=project.modules | grep '<.*>.*</.*>' | sed -e 's/<.*>\(.*\)<\/.*>/\1/g'))
58*55e87721SMatt Gilbrideelse
59*55e87721SMatt Gilbride  modules=($(echo "${MODULE_LIST}" | tr ',' ' '))
60*55e87721SMatt Gilbridefi
61*55e87721SMatt Gilbrideexcluded_modules=('gapic-libraries-bom' 'google-cloud-jar-parent' 'google-cloud-pom-parent' 'java-shared-dependencies')
62*55e87721SMatt Gilbride# TODO: Maps docs exclusion logic to be removed once we move to correct location on devsite. See b/262712184 and b/262600829
63*55e87721SMatt Gilbridewhile IFS=  read -r -d $'\0'; do
64*55e87721SMatt Gilbride    excluded_modules+=("$REPLY")
65*55e87721SMatt Gilbridedone < <(find java-maps-* -type d -maxdepth 0 -print0)
66*55e87721SMatt Gilbrideecho "Excluded modules: ${excluded_modules[*]}"
67*55e87721SMatt Gilbridefailed_modules=()
68*55e87721SMatt Gilbride
69*55e87721SMatt Gilbridefor module in "${modules[@]}"; do
70*55e87721SMatt Gilbride  # Proceed if module is not excluded
71*55e87721SMatt Gilbride  # Spaces are intentionally added -- Query is regex and array elements are space separated
72*55e87721SMatt Gilbride  # It tries to match the *exact* `module` text
73*55e87721SMatt Gilbride  if [[ ! " ${excluded_modules[*]} " =~ " ${module} " ]]; then
74*55e87721SMatt Gilbride    pushd $module
75*55e87721SMatt Gilbride    # Extract Cloud RAD module name from `distribution_name` in .repo-metadata.json
76*55e87721SMatt Gilbride    NAME=$(grep -o '"distribution_name": "[^"]*' .repo-metadata.json | grep -o '[^"]*$' | cut -d ':' -f 2)
77*55e87721SMatt Gilbride    # Extract (current) version from root `versions.txt` file and remove `-SNAPSHOT`
78*55e87721SMatt Gilbride    VERSION=$(grep "^${NAME}:" "${root_dir}/versions.txt" | cut -d: -f3 | sed -e 's/-SNAPSHOT//g')
79*55e87721SMatt Gilbride    echo "Running for ${NAME}-${VERSION}"
80*55e87721SMatt Gilbride
81*55e87721SMatt Gilbride    # Cloud RAD generation
82*55e87721SMatt Gilbride    if [ -z "${doclet_name}" ]; then
83*55e87721SMatt Gilbride      mvn clean -B -ntp \
84*55e87721SMatt Gilbride        -P docFX \
85*55e87721SMatt Gilbride        -Dclirr.skip=true \
86*55e87721SMatt Gilbride        -Denforcer.skip=true \
87*55e87721SMatt Gilbride        -Dorg.slf4j.simpleLogger.showDateTime=true -Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss:SSS \
88*55e87721SMatt Gilbride        -Dcheckstyle.skip=true \
89*55e87721SMatt Gilbride        -Dflatten.skip=true \
90*55e87721SMatt Gilbride        -Danimal.sniffer.skip=true \
91*55e87721SMatt Gilbride        javadoc:aggregate
92*55e87721SMatt Gilbride    else
93*55e87721SMatt Gilbride      mvn clean -B -ntp \
94*55e87721SMatt Gilbride        -P docFX \
95*55e87721SMatt Gilbride        -DdocletPath=${KOKORO_GFILE_DIR}/${doclet_name} \
96*55e87721SMatt Gilbride        -Dclirr.skip=true \
97*55e87721SMatt Gilbride        -Denforcer.skip=true \
98*55e87721SMatt Gilbride        -Dorg.slf4j.simpleLogger.showDateTime=true -Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss:SSS \
99*55e87721SMatt Gilbride        -Dcheckstyle.skip=true \
100*55e87721SMatt Gilbride        -Dflatten.skip=true \
101*55e87721SMatt Gilbride        -Danimal.sniffer.skip=true \
102*55e87721SMatt Gilbride        javadoc:aggregate
103*55e87721SMatt Gilbride    fi
104*55e87721SMatt Gilbride
105*55e87721SMatt Gilbride    if [ "$?" -ne "0" ]; then
106*55e87721SMatt Gilbride      failed_modules+=("${module}")
107*55e87721SMatt Gilbride      continue
108*55e87721SMatt Gilbride    fi
109*55e87721SMatt Gilbride    # include CHANGELOG if exists
110*55e87721SMatt Gilbride    if [ -e CHANGELOG.md ]; then
111*55e87721SMatt Gilbride      cp CHANGELOG.md target/docfx-yml/history.md
112*55e87721SMatt Gilbride    fi
113*55e87721SMatt Gilbride    pushd target/docfx-yml
114*55e87721SMatt Gilbride
115*55e87721SMatt Gilbride    echo "Creating metadata for ${module}..."
116*55e87721SMatt Gilbride    # create metadata
117*55e87721SMatt Gilbride    python3 -m docuploader create-metadata \
118*55e87721SMatt Gilbride      --name ${NAME} \
119*55e87721SMatt Gilbride      --version ${VERSION} \
120*55e87721SMatt Gilbride      --xrefs devsite://java/gax \
121*55e87721SMatt Gilbride      --xrefs devsite://java/google-cloud-core \
122*55e87721SMatt Gilbride      --xrefs devsite://java/api-common \
123*55e87721SMatt Gilbride      --xrefs devsite://java/proto-google-common-protos \
124*55e87721SMatt Gilbride      --xrefs devsite://java/google-api-client \
125*55e87721SMatt Gilbride      --xrefs devsite://java/google-http-client \
126*55e87721SMatt Gilbride      --xrefs devsite://java/protobuf \
127*55e87721SMatt Gilbride      --language java
128*55e87721SMatt Gilbride
129*55e87721SMatt Gilbride    echo "Uploading tarball for ${module}..."
130*55e87721SMatt Gilbride    # upload yml to production bucket
131*55e87721SMatt Gilbride    python3 -m docuploader upload . \
132*55e87721SMatt Gilbride      --credentials ${CREDENTIALS} \
133*55e87721SMatt Gilbride      --staging-bucket ${STAGING_BUCKET_V2} \
134*55e87721SMatt Gilbride      --destination-prefix docfx
135*55e87721SMatt Gilbride
136*55e87721SMatt Gilbride    echo "Uploaded tarball for ${module}"
137*55e87721SMatt Gilbride
138*55e87721SMatt Gilbride    popd # out of target/docfx-yml
139*55e87721SMatt Gilbride    popd # out of $module
140*55e87721SMatt Gilbride  fi
141*55e87721SMatt Gilbridedone
142*55e87721SMatt Gilbride
143*55e87721SMatt Gilbrideif [ ${#failed_modules[@]} -eq 0 ]; then
144*55e87721SMatt Gilbride  echo "All modules uploaded to CloudRAD"
145*55e87721SMatt Gilbrideelse
146*55e87721SMatt Gilbride  echo "These modules failed: ${failed_modules[*]}"
147*55e87721SMatt Gilbride  exit 1
148*55e87721SMatt Gilbridefi
149