- gerrit-rtd-merge
- gerrit-rtd-verify
- rtd-project: gerrit-rtd
project-name: gerrit-rtd
+ rtd-build-url: fake-rtd-build-url
+ rtd-token: fake-rtd-token
- project:
name: github-rtd-jobs
- github-rtd-merge
- github-rtd-verify
- rtd-project: github-rtd
project-name: github-rtd
+ rtd-build-url: fake-rtd-build-url
+ rtd-token: fake-rtd-token
ReadTheDocs Merge
-----------------
-Merge job which triggers a POST of the docs project to readthedocs
+Merge job which triggers a POST of the docs project to readthedocs.
+
+To use this job first configure the ``Generic API incoming webhook`` in
+ReadTheDocs. To do that follow these steps:
+
+#. Browse to https://readthedocs.org/dashboard/PROJECT/integrations/
+#. Click on ``Generic API incoming webhook``
+
+ .. note::
+
+ If not available click on ``Add integration`` and add the
+ ``Generic API incoming webhook``.
+
+#. Copy the custom webhook URL, this is your ``rtd-build-url``
+
+ For example: https://readthedocs.org/api/v2/webhook/opendaylight/32321/
+
+#. Copy the token, this is your ``rtd-token``
:Template Names:
- {project-name}-rtd-merge-{stream}
:build-node: The node to run build on.
:jenkins-ssh-credential: Credential to use for SSH. (Generally set
in defaults.yaml)
- :rtd-project: This is the name of the project on ReadTheDocs.org.
+ :rtd-build-url: This is the generic webhook url from readthedocs.org. Refer
+ to the above instructions to generate one.
+ (Check Admin > Integrations > Generic API incoming webhook)
+ :rtd-token: The unique token for the project Generic webhook. Refer
+ to the above instructions to generate one.
+ (Check Admin > Integrations > Generic API incoming webhook)
:Optional parameters:
name: lf-rtd-trigger-build
builders:
- inject:
- properties-content: RTD_PROJECT={rtd-project}
+ properties-content: |
+ RTD_BUILD_URL={rtd-build-url}
+ RTD_TOKEN={rtd-token}
- shell: !include-raw-escape: ../shell/rtd-trigger-build.sh
- builder:
builders:
- lf-rtd-trigger-build:
- rtd-project: '{rtd-project}'
+ rtd-build-url: '{rtd-build-url}'
+ rtd-token: '{rtd-token}'
- job-template:
name: '{project-name}-rtd-merge-{stream}'
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
##############################################################################
+# Call cURL to trigger a build in RTD via the Generic API
+#
+# Paramters:
+# 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/"; :
+
+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."
+ echo "$json" | jq -r
+ 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."