Update RTD to use custom trigger url 34/9634/4
authorJeremy Phelps <jphelps@linuxfoundation.org>
Tue, 27 Mar 2018 16:45:57 +0000 (11:45 -0500)
committerJeremy Phelps <jphelps@linuxfoundation.org>
Tue, 27 Mar 2018 17:37:38 +0000 (12:37 -0500)
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 <jphelps@linuxfoundation.org>
docs/jjb/lf-rtd-jobs.rst
jjb/lf-macros.yaml
jjb/lf-rtd-jobs.yaml
shell/rtd-trigger-build.sh

index 8f85f1a..2b3500e 100644 (file)
@@ -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:
 
index 133becd..9aa05e0 100644 (file)
     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:
index 20470be..d8d757f 100644 (file)
     ######################
     # 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}'
index 21e7269..5c47ea6 100644 (file)
@@ -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"
+