From 12d6179c0e7c208a360a3c61c0b715b49310b39e Mon Sep 17 00:00:00 2001 From: Jeremy Phelps Date: Tue, 27 Mar 2018 11:45:57 -0500 Subject: [PATCH] Update RTD to use custom trigger url The generic trigger url is now deprecated. Going forward users will have to use the Generic API incoming webhook that is defined per project in the read the docs service. Change-Id: Iac0774266e787705e7fb903712cbfb4b4a41fb55 Signed-off-by: Jeremy Phelps --- docs/jjb/lf-rtd-jobs.rst | 18 +++++++++++++++++- jjb/lf-macros.yaml | 6 +++++- jjb/lf-rtd-jobs.yaml | 8 ++++++++ shell/rtd-trigger-build.sh | 10 +++++++++- 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/docs/jjb/lf-rtd-jobs.rst b/docs/jjb/lf-rtd-jobs.rst index 8f85f1a9..2b3500ea 100644 --- a/docs/jjb/lf-rtd-jobs.rst +++ b/docs/jjb/lf-rtd-jobs.rst @@ -44,7 +44,18 @@ Job Templates 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} @@ -57,6 +68,11 @@ Merge job which triggers a POST of the docs project to readthedocs :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: diff --git a/jjb/lf-macros.yaml b/jjb/lf-macros.yaml index 133becdc..9aa05e08 100644 --- a/jjb/lf-macros.yaml +++ b/jjb/lf-macros.yaml @@ -185,7 +185,11 @@ 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: diff --git a/jjb/lf-rtd-jobs.yaml b/jjb/lf-rtd-jobs.yaml index 20470be7..d8d757f3 100644 --- a/jjb/lf-rtd-jobs.yaml +++ b/jjb/lf-rtd-jobs.yaml @@ -23,6 +23,11 @@ ###################### # Default parameters # ###################### + rtd-project: '' + rtd-build-url: '' + global-settings-file: '$WORKSPACE/settings.xml' + rtd-server-id: '' + gerrit_trigger_file_paths: - compare-type: ANT @@ -88,6 +93,9 @@ 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}' diff --git a/shell/rtd-trigger-build.sh b/shell/rtd-trigger-build.sh index 21e72694..5c47ea64 100644 --- a/shell/rtd-trigger-build.sh +++ b/shell/rtd-trigger-build.sh @@ -20,4 +20,12 @@ else 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" + -- 2.16.6