# 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"