Allow JJB Cache directory to be configured 43/13343/2
authorTrevor Bramwell <tbramwell@linuxfoundation.org>
Tue, 6 Nov 2018 00:30:38 +0000 (16:30 -0800)
committerTrevor Bramwell <tbramwell@linuxfoundation.org>
Wed, 14 Nov 2018 20:58:54 +0000 (12:58 -0800)
When JJB is ran concurrently on the same system with caching enabled, a
timeout can occur when one job fails after waiting 1 minute to aquire
the lock on the JJB cache directory.

Even if caching is disabled/ignored this timeout can still occur as JJB
always tries to lock the cache directory.

Having the ability to configure the cache directory will allow projects
to override it dynamically (with Jenkins env-vars) and run concurrent
jobs on the same node.

Change-Id: I1187847f658e754621369005e627a0f33a0253bc
Signed-off-by: Trevor Bramwell <tbramwell@linuxfoundation.org>
docs/jjb/lf-ci-jobs.rst
jjb/lf-ci-jobs.yaml
releasenotes/notes/jjb-cache-3a564a6943a5385e.yaml [new file with mode: 0644]

index a394741..25f9d11 100644 (file)
@@ -21,6 +21,8 @@ lf-infra-jjb-parameters
 
 :Required Parameters:
 
+    :jjb-cache: Location of Jenkins Job Builder (JJB) cache used for jjb
+        jobs.
     :jjb-version: Version of Jenkins Job Builder (JJB) to install and use in
         the jjb jobs.
 
@@ -365,6 +367,7 @@ Runs `jenkins-jobs update` to update production job configuration
     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
     :build-timeout: Timeout in minutes before aborting build. (default: 10)
     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
+    :jjb-cache: JJB cache location. (default: $HOME/.cache/jenkins_jobs)
     :jjb-version: JJB version to install. (default: see job-template)
     :stream: Keyword that can be used to represent a release code-name.
         Often the same as the branch. (default: master)
@@ -403,6 +406,7 @@ Runs `jenkins-jobs test` to validate JJB syntax
     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
     :build-timeout: Timeout in minutes before aborting build. (default: 10)
     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
+    :jjb-cache: JJB cache location. (default: $HOME/.cache/jenkins_jobs)
     :jjb-version: JJB version to install. (default: see job-template)
     :stream: Keyword that can be used to represent a release code-name.
         Often the same as the branch. (default: master)
@@ -443,6 +447,7 @@ project level jobs.
     :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7)
     :build-timeout: Timeout in minutes before aborting build. (default: 10)
     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
+    :jjb-cache: JJB cache location. (default: $HOME/.cache/jenkins_jobs)
     :jjb-version: JJB version to install. (default: see job-template)
     :stream: Keyword that can be used to represent a release code-name.
         Often the same as the branch. (default: master)
index 638716e..0319e11 100644 (file)
           name: JJB_VERSION
           default: '{jjb-version}'
           description: Jenkins Job Builder version to download and install.
+      - string:
+          name: XDG_CACHE_HOME
+          default: '{jjb-cache}'
+          description: Jenkins Job Builder cache location.
 
 - parameter:
     name: lf-packer-parameters
     build-timeout: 10
     disable-job: false
     github-url: 'https://github.com'
+    jjb-cache: '$HOME/.cache/jenkins_jobs'
     jjb-version: 2.2.1
     stream: master
     submodule-recursive: true
           branch: '{branch}'
           lftools-version: '{lftools-version}'
       - lf-infra-jjb-parameters:
+          jjb-cache: '{jjb-cache}'
           jjb-version: '{jjb-version}'
 
     wrappers:
 
     parameters:
       - lf-infra-jjb-parameters:
+          jjb-cache: '{jjb-cache}'
           jjb-version: '{jjb-version}'
 
     triggers:
diff --git a/releasenotes/notes/jjb-cache-3a564a6943a5385e.yaml b/releasenotes/notes/jjb-cache-3a564a6943a5385e.yaml
new file mode 100644 (file)
index 0000000..c8b5b89
--- /dev/null
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add the ability to configure the location of JJB's cache directory
+    for CI jobs.