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. There is some setup
+required on read the docs to get started with this. After you have created the
+individual read the docs project (lets call it "PROJECT" here), then browse to
+https://readthedocs.org/dashboard/PROJECT/integrations/ and click on
+"Generic API incoming webhook". Here you will see a custom url to trigger the job as
+well as a token. Persist the token in the project Jenkins global-settings
+file. You will need to put it in a username/password credentials type to make
+it available in the global-settings file. set ```rtd-build-url to the
+custom build url as defined in read the docs. Also set the rtd-server-id
+to the id you specified in the global-settings file, this will enable the script to parse
+the token out. Set ```rtd-project``` to your read the docs project name.
+
:Template Names:
- {project-name}-rtd-merge-{stream}
: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
+ :global-settings-file: This is the location of the Jenkins global settings file.
+ This file contains the entry with the location for the readthedocs build token.
+ :rtd-server-id: This is the id of the entry in the global-settings-file.
+
:Optional parameters:
name: lf-rtd-trigger-build
builders:
- inject:
- properties-content: RTD_PROJECT={rtd-project}
+ properties-content: |
+ RTD_PROJECT={rtd-project}
+ RTD_BUILD_URL={rtd-build-url}
+ SETTINGS_FILE={global-settings-file}
+ SERVER_ID={rtd-server-id}
- shell: !include-raw-escape: ../shell/rtd-trigger-build.sh
- builder:
######################
# Default parameters #
######################
+ rtd-project: ''
+ rtd-build-url: ''
+ global-settings-file: '$WORKSPACE/settings.xml'
+ rtd-server-id: ''
+
gerrit_trigger_file_paths:
- compare-type: ANT
builders:
- lf-rtd-trigger-build:
rtd-project: '{rtd-project}'
+ rtd-build-url: '{rtd-build-url}'
+ global-settings-file: '{global-settings-file}'
+ rtd-server-id: '{rtd-server-id}'
- job-template:
name: '{project-name}-rtd-merge-{stream}'
RTD_BUILD_VERSION="${GERRIT_BRANCH/\//-}"
fi
-curl -X POST --data "version_slug=$RTD_BUILD_VERSION" "https://readthedocs.org/build/$RTD_PROJECT"
+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")
+
+RTD_BUILD_TOKEN=$(echo "$CREDENTIAL" | cut -f2 -d:)
+
+curl -X POST -d "branches=$RTD_BUILD_VERSION" -d "token=$RTD_BUILD_TOKEN" "$RTD_BUILD_URL"
+