Chore: Upgrade Jenkins-job-builder to 6.3.0
[releng/global-jjb.git] / shell / jenkins-configure-global-vars.sh
1 #!/bin/bash -l
2 # SPDX-License-Identifier: EPL-1.0
3 ##############################################################################
4 # Copyright (c) 2018 The Linux Foundation and others.
5 #
6 # All rights reserved. This program and the accompanying materials
7 # are made available under the terms of the Eclipse Public License v1.0
8 # which accompanies this distribution, and is available at
9 # http://www.eclipse.org/legal/epl-v10.html
10 ##############################################################################
11 # Pulls global variable definitions out of a file.
12 #
13 # Configuration is read from $WORKSPACE/jenkins-config/global-vars-$silo.sh
14 #
15 # Requirements: lftools must be installed to /tmp/v/lftools
16 # Parameters:
17 #     jenkins_silos:  Space separated list of Jenkins silos to push global-vars
18 #                     configuration to. (default: jenkins)
19 echo "---> jenkins-configure-global-vars.sh"
20
21 GROOVY_SCRIPT_FILE="global-jjb/jenkins-admin/set_global_properties.groovy"
22
23 silos="${jenkins_silos:-jenkins}"
24
25 set -eu -o pipefail
26
27 # shellcheck disable=SC1090
28 . ~/lf-env.sh
29
30 lf-activate-venv --python python3 lftools
31
32 for silo in $silos; do
33     if [ ! -f "$WORKSPACE/jenkins-config/global-vars-$silo.sh" ]; then
34         echo "WARN: jenkins-config/global-vars-$silo.sh does not exist. Skipping cloud management..."
35         echo "We highly recommend setting up global-vars-$silo.sh to manage the Jenkins global variables."
36         # shellcheck disable=SC2140
37         echo "Refer to https://docs.releng.linuxfoundation.org/"\
38 "projects/global-jjb/en/latest/jjb/lf-ci-jobs.html"\
39 "#global-environment-variables for details."
40         continue
41     fi
42
43     set +x  # Ensure that no other scripts add `set -x` and print passwords
44     echo "Configuring $silo"
45
46     JENKINS_URL=$(crudini --get "$HOME"/.config/jenkins_jobs/jenkins_jobs.ini "$silo" url)
47     JENKINS_USER=$(crudini --get "$HOME"/.config/jenkins_jobs/jenkins_jobs.ini "$silo" user)
48     JENKINS_PASSWORD=$(crudini --get "$HOME"/.config/jenkins_jobs/jenkins_jobs.ini "$silo" password)
49     export JENKINS_URL
50     export JENKINS_USER
51     export JENKINS_PASSWORD
52
53     global_vars="$WORKSPACE/jenkins-config/global-vars-$silo.sh"
54
55     if [ ! -f "$global_vars" ]; then
56         echo "ERROR: Configuration file $global_vars not found."
57         exit 1
58     fi
59
60     mapfile -t vars < <(cat "$global_vars")
61
62     rm -f insert.txt
63     for var in "${vars[@]}"; do
64         # Ignore comments and blank lines
65         if [[ $var == '#'* ]] || [ -z "$var" ]; then
66             continue
67         fi
68
69         key=$(echo "$var" | cut -d= -f1)
70         value=$(echo "$var" | cut -d= -f2)
71         echo "    '$key': '$value'," >> insert.txt
72     done
73
74     # Insert variables and remove first occurrence of JENKINS_URL variable
75     echo "-----> script.groovy"
76     sed "/'JENKINS_URL'/r insert.txt" "$GROOVY_SCRIPT_FILE" \
77         | sed "0,/'JENKINS_URL'/{/'JENKINS_URL'/d}" \
78         > script.groovy
79     cat script.groovy
80
81     lftools jenkins groovy script.groovy
82 done