Chore: Upgrade Jenkins-job-builder to 6.3.0
[releng/global-jjb.git] / shell / rtd-trigger-build.sh
index 5c47ea6..e0a6f00 100644 (file)
@@ -8,24 +8,37 @@
 # which accompanies this distribution, and is available at
 # http://www.eclipse.org/legal/epl-v10.html
 ##############################################################################
+# Calls cURL to trigger a build in RTD via the Generic API
+#
+# Parameters:
+#     RTD_BUILD_URL: The unique build URL for the project.
+#                    Check Admin > Integrations > Generic API incoming webhook.
+#
+#     RTD_TOKEN: The unique token for the project Generic webhook.
+#                Check Admin > Integrations > Generic API incoming webhook.
+
 echo "---> rtd-trigger-build.sh"
 
 # Ensure we fail the job if any steps fail.
-# DO NOT set -u
-set -xe -o pipefail
+# DO NOT set -u as we depend on unbound variables being passed by Jenkins.
+set -e -o pipefail
 
-if [ "$GERRIT_BRANCH" == "master" ]; then
-    RTD_BUILD_VERSION=latest
-else
-    RTD_BUILD_VERSION="${GERRIT_BRANCH/\//-}"
-fi
+# Ensure RTD_BUILD_URL retains the trailing slash as it is needed for the API
+last_char=${RTD_BUILD_URL:length-1:1}
+[[ $last_char != "/" ]] && RTD_BUILD_URL="$RTD_BUILD_URL/"; :
 
-CREDENTIAL=$(xmlstarlet sel -N "x=http://maven.apache.org/SETTINGS/1.0.0" \
-    -t -m "/x:settings/x:servers/x:server[x:id='${SERVER_ID}']" \
-    -v x:username -o ":" -v x:password \
-    "$SETTINGS_FILE")
+# Handle case for gerrit event type is ref-updated when new tag are pushed
+[[ $GERRIT_EVENT_TYPE =~ "ref-updated" ]] && GERRIT_BRANCH=${GERRIT_REFNAME##*/}
 
-RTD_BUILD_TOKEN=$(echo "$CREDENTIAL" | cut -f2 -d:)
+echo "INFO: Posting request for branch $GERRIT_BRANCH to URL $RTD_BUILD_URL"
+json=$(curl -X POST -d "branches=${GERRIT_BRANCH}" -d "token=$RTD_TOKEN" "$RTD_BUILD_URL")
+build_triggered=$(echo "$json" | jq -r .build_triggered)
 
-curl -X POST -d "branches=$RTD_BUILD_VERSION" -d "token=$RTD_BUILD_TOKEN" "$RTD_BUILD_URL"
+if [ "$build_triggered" != "true" ]; then
+    echo "ERROR: Build was not triggered, ReadTheDocs response follows:"
+    echo "$json"
+    exit 1
+fi
 
+echo "Build triggered for $GERRIT_PROJECT in ReadTheDocs."
+echo "---> rtd-trigger-build.sh ends"