summary refs log tree commit diff
path: root/nixos/modules/services/continuous-integration/jenkins/job-builder.nix
diff options
context:
space:
mode:
authorBjørn Forsman <bjorn.forsman@gmail.com>2018-11-28 07:03:19 +0100
committerBjørn Forsman <bjorn.forsman@gmail.com>2018-12-03 17:07:29 +0100
commit8ebfd5c45cd25e5bce147467c5946eb76ee1d154 (patch)
treee116b8c4cc3090edd3c4d9f6aae57c4de784ed27 /nixos/modules/services/continuous-integration/jenkins/job-builder.nix
parent84a2463499d7e67350277e0f02cdb4412d0262cf (diff)
downloadnixpkgs-8ebfd5c45cd25e5bce147467c5946eb76ee1d154.tar
nixpkgs-8ebfd5c45cd25e5bce147467c5946eb76ee1d154.tar.gz
nixpkgs-8ebfd5c45cd25e5bce147467c5946eb76ee1d154.tar.bz2
nixpkgs-8ebfd5c45cd25e5bce147467c5946eb76ee1d154.tar.lz
nixpkgs-8ebfd5c45cd25e5bce147467c5946eb76ee1d154.tar.xz
nixpkgs-8ebfd5c45cd25e5bce147467c5946eb76ee1d154.tar.zst
nixpkgs-8ebfd5c45cd25e5bce147467c5946eb76ee1d154.zip
nixos/jenkins-job-builder: stop reloadScript on error
Currently there are two calls to curl in the reloadScript, neither which
check for errors. If something is misconfigured (like wrong authToken),
the only trace that something wrong happened is this log message:

  Asking Jenkins to reload config
  <h1>Bad Message 400</h1><pre>reason: Illegal character VCHAR='<'</pre>

The service isn't marked as failed, so it's easy to miss.

Fix it by passing --fail to curl.

While at it:
* Add $curl_opts and $jenkins_url variables to keep the curl command
  lines DRY.
* Add --show-error to curl to show short error message explanation when
  things go wrong (like HTTP 401 error).
* Lower-case the $CRUMB variable as upper case is for exported environment
  variables.

The new behaviour, when having wrong accessToken:

  Asking Jenkins to reload config
  curl: (22) The requested URL returned error: 401

And the service is clearly marked as failed in `systemctl --failed`.
Diffstat (limited to 'nixos/modules/services/continuous-integration/jenkins/job-builder.nix')
-rw-r--r--nixos/modules/services/continuous-integration/jenkins/job-builder.nix6
1 files changed, 4 insertions, 2 deletions
diff --git a/nixos/modules/services/continuous-integration/jenkins/job-builder.nix b/nixos/modules/services/continuous-integration/jenkins/job-builder.nix
index 861b46a2d64..682586b83e3 100644
--- a/nixos/modules/services/continuous-integration/jenkins/job-builder.nix
+++ b/nixos/modules/services/continuous-integration/jenkins/job-builder.nix
@@ -128,8 +128,10 @@ in {
           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
+            curl_opts="--silent --fail --show-error"
+            jenkins_url="http://${cfg.accessUser}:${accessToken}@${jenkinsCfg.listenAddress}:${toString jenkinsCfg.port}${jenkinsCfg.prefix}"
+            crumb=$(curl $curl_opts "$jenkins_url"'/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
+            curl $curl_opts -X POST -H "$crumb" "$jenkins_url"/reload
           '';
         in
           ''