summary refs log tree commit diff
path: root/nixos/modules/services/continuous-integration/jenkins/job-builder.nix
diff options
context:
space:
mode:
authorWei Tang <hi@that.world>2017-03-02 14:05:47 +0800
committerGraham Christensen <graham@grahamc.com>2017-03-06 07:57:01 -0500
commit99013f853a65b7bc4669ac12a2137d82619e3073 (patch)
treeeeb1e824249533e765185977771b05ee36bce86e /nixos/modules/services/continuous-integration/jenkins/job-builder.nix
parent633cd69453dcb5efa922558b8cbe7bfb8cefffbe (diff)
downloadnixpkgs-99013f853a65b7bc4669ac12a2137d82619e3073.tar
nixpkgs-99013f853a65b7bc4669ac12a2137d82619e3073.tar.gz
nixpkgs-99013f853a65b7bc4669ac12a2137d82619e3073.tar.bz2
nixpkgs-99013f853a65b7bc4669ac12a2137d82619e3073.tar.lz
nixpkgs-99013f853a65b7bc4669ac12a2137d82619e3073.tar.xz
nixpkgs-99013f853a65b7bc4669ac12a2137d82619e3073.tar.zst
nixpkgs-99013f853a65b7bc4669ac12a2137d82619e3073.zip
jenkins-job-builder: allow setting access tokens for reloading
Diffstat (limited to 'nixos/modules/services/continuous-integration/jenkins/job-builder.nix')
-rw-r--r--nixos/modules/services/continuous-integration/jenkins/job-builder.nix26
1 files changed, 22 insertions, 4 deletions
diff --git a/nixos/modules/services/continuous-integration/jenkins/job-builder.nix b/nixos/modules/services/continuous-integration/jenkins/job-builder.nix
index 7b1fe6269fe..861b46a2d64 100644
--- a/nixos/modules/services/continuous-integration/jenkins/job-builder.nix
+++ b/nixos/modules/services/continuous-integration/jenkins/job-builder.nix
@@ -29,6 +29,22 @@ in {
         '';
       };
 
+      accessUser = mkOption {
+        default = "";
+        type = types.str;
+        description = ''
+          User id in Jenkins used to reload config.
+        '';
+      };
+
+      accessToken = mkOption {
+        default = "";
+        type = types.str;
+        description = ''
+          User token in Jenkins used to reload config.
+        '';
+      };
+
       yamlJobs = mkOption {
         default = "";
         type = types.lines;
@@ -110,6 +126,11 @@ in {
           # Stamp file is placed in $JENKINS_HOME/jobs/$JOB_NAME/ to indicate
           # ownership. Enables tracking and removal of stale jobs.
           ownerStamp = ".config-xml-managed-by-nixos-jenkins-job-builder";
+          reloadScript = ''
+            echo "Asking Jenkins to reload config"
+            CRUMB=$(curl -s 'http://${cfg.accessUser}:${cfg.accessToken}@${jenkinsCfg.listenAddress}:${toString jenkinsCfg.port}${jenkinsCfg.prefix}/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
+            curl --silent -X POST -H "$CRUMB" http://${cfg.accessUser}:${cfg.accessToken}@${jenkinsCfg.listenAddress}:${toString jenkinsCfg.port}${jenkinsCfg.prefix}/reload
+          '';
         in
           ''
             rm -rf ${jobBuilderOutputDir}
@@ -142,10 +163,7 @@ in {
                 echo "Deleting stale job \"$jobname\""
                 rm -rf "$jobdir"
             done
-
-            echo "Asking Jenkins to reload config"
-            curl --silent -X POST http://${jenkinsCfg.listenAddress}:${toString jenkinsCfg.port}${jenkinsCfg.prefix}/reload
-          '';
+          '' + (if cfg.accessUser != "" then reloadScript else "");
       serviceConfig = {
         User = jenkinsCfg.user;
         RuntimeDirectory = "jenkins-job-builder";