Add jenkins slave image update jobs
[infra/cicd.git] / jjb / infra / update-jenkins-slave.sh
1 #!/bin/bash
2 set -o errexit
3 set -o nounset
4 set -o pipefail
5
6 sudo apt install -y -q=3 python3-minimal python3-pip virtualenv
7
8 # workaround for https://github.com/pypa/virtualenv/issues/1029
9 export PS1=${PS1:-}
10
11 cd "$WORKSPACE"
12 echo "----------------------------------------------------"
13 echo "Info: Create virtualenv to update Jenkins slaves"
14 virtualenv -p python3 --quiet --no-site-packages .venv
15 source .venv/bin/activate
16 pip install python-openstackclient
17 echo "----------------------------------------------------"
18 echo "Info  : Installing packer version ${PACKER_VERSION}"
19 wget -q "https://releases.hashicorp.com/packer/${PACKER_VERSION}/packer_${PACKER_VERSION}_linux_amd64.zip" -O /tmp/packer.zip
20 unzip /tmp/packer.zip > /dev/null 2>&1
21 sudo mv -f ./packer /usr/local/bin/packer
22 sudo chmod +x /usr/local/bin/packer
23 echo "----------------------------------------------------"
24 packer -version
25 /bin/rm -f /tmp/packer.zip
26 # shellcheck disable=SC1091
27 source "/tmp/openrc"
28 echo "----------------------------------------------------"
29 echo "Info: Create backup of existing image"
30 cd "$WORKSPACE"
31 BACKUP_ZONE_ID=$(openstack image list --property name=${IMAGE} -f value -c ID)
32 openstack image set --name "${IMAGE}-backup-$GIT_COMMIT" "$BACKUP_ZONE_ID"
33 echo "----------------------------------------------------"
34 echo "Info: Updating the CI slave image"
35 cd "infra/jenkins/slave-setup/${TARGET}/"
36 packer validate *-ubuntu*.json
37 packer build *-ubuntu*.json
38 echo "----------------------------------------------------"