Chore: Upgrade Jenkins-job-builder to 6.3.0
[releng/global-jjb.git] / shell / rtd-trigger-build.sh
index 21e7269..e0a6f00 100644 (file)
@@ -8,16 +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
+
+# 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/"; :
+
+# Handle case for gerrit event type is ref-updated when new tag are pushed
+[[ $GERRIT_EVENT_TYPE =~ "ref-updated" ]] && GERRIT_BRANCH=${GERRIT_REFNAME##*/}
+
+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)
 
-if [ "$GERRIT_BRANCH" == "master" ]; then
-    RTD_BUILD_VERSION=latest
-else
-    RTD_BUILD_VERSION="${GERRIT_BRANCH/\//-}"
+if [ "$build_triggered" != "true" ]; then
+    echo "ERROR: Build was not triggered, ReadTheDocs response follows:"
+    echo "$json"
+    exit 1
 fi
 
-curl -X POST --data "version_slug=$RTD_BUILD_VERSION" "https://readthedocs.org/build/$RTD_PROJECT"
+echo "Build triggered for $GERRIT_PROJECT in ReadTheDocs."
+echo "---> rtd-trigger-build.sh ends"