Use a temporary directory for jjb-installs 00/10700/2
authorTrevor Bramwell <tbramwell@linuxfoundation.org>
Thu, 17 May 2018 19:01:40 +0000 (12:01 -0700)
committerTrevor Bramwell <tbramwell@linuxfoundation.org>
Thu, 17 May 2018 21:46:47 +0000 (14:46 -0700)
When jjb-verify and jjb-merge jobs get scheduled on the same static
node only one can run at a time. So when jjb-merge is running any
jjb-verify jobs triggered during that time fail.

Change-Id: I2ba93417614977741999151cd155a4a165b0229a
Signed-off-by: Trevor Bramwell <tbramwell@linuxfoundation.org>
jjb/lf-ci-jobs.yaml
shell/jjb-cleanup.sh [new file with mode: 0644]
shell/jjb-install.sh

index 41eb6da..ea45c55 100644 (file)
       - shell: !include-raw-escape:
           - ../shell/jjb-install.sh
           - ../shell/jjb-merge-job.sh
+          - ../shell/jjb-cleanup.sh
 
 - job-template:
     name: '{project-name}-jjb-merge'
           - ../shell/jjb-install.sh
           - ../shell/jjb-verify-job.sh
           - ../shell/jjb-check-unicode.sh
+          - ../shell/jjb-cleanup.sh
       - lf-infra-gpg-verify-git-signature
 
 - job-template:
diff --git a/shell/jjb-cleanup.sh b/shell/jjb-cleanup.sh
new file mode 100644 (file)
index 0000000..8f5a626
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/bash
+# SPDX-License-Identifier: EPL-1.0
+##############################################################################
+# Copyright (c) 2017 The Linux Foundation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+##############################################################################
+echo "---> jjb-cleanup.sh"
+# Cleans up the temporary directory created for the virtualenv but only if it
+# exists under /tmp. This is to ensure we never attempt to blow away '/'
+# through mis-set bash variables.
+
+# Ensure we fail the job if any steps fail.
+# DO NOT set -u as virtualenv's activate script has unbound variables
+set -e -o pipefail
+
+# shellcheck source="$WORKSPACE/.jjb.properties" disable=SC1091
+source "$WORKSPACE/.jjb.properties"
+if [[ -n "$JJB_VENV" && "$JJB_VENV" =~ /tmp/.* ]]; then
+    rm -r "$JJB_VENV" && "$JJB_VENV removed"
+fi
+rm "$WORKSPACE/.jjb.properties"
index 9351f48..86fbef7 100644 (file)
@@ -14,9 +14,14 @@ echo "---> jjb-install.sh"
 # DO NOT set -u as virtualenv's activate script has unbound variables
 set -e -o pipefail
 
-virtualenv "/tmp/v/jjb"
-# shellcheck source=/tmp/v/jjb/bin/activate disable=SC1091
-source "/tmp/v/jjb/bin/activate"
+# Create a virtualenv in a temporary directoy and write it down to used
+# or cleaned up later; cleanup is done in the script jjb-cleanup.sh.
+JJB_VENV="$(mktemp -d)"
+export JJB_VENV
+virtualenv "$JJB_VENV"
+echo "JJB_VENV=$JJB_VENV" > "$WORKSPACE/.jjb.properties"
+# shellcheck source=$VENV_DIR/bin/activate disable=SC1091
+source "$JJB_VENV/bin/activate"
 pip install --quiet --upgrade "pip==9.0.3" setuptools
 pip install --quiet --upgrade "jenkins-job-builder==$JJB_VERSION"