#!/bin/bash set -o errexit set -o nounset set -o pipefail DPKG_LOCK="/var/lib/dpkg/lock-frontend" # Wait for other apt process to finish by checking the dpkg lock file. try=0 while sudo lsof ${DPKG_LOCK} > /dev/null 2>&1 ; do echo "DPKG file locked: ${DPKG_LOCK}." echo " Waiting for another pkg instalaltion process to finish ..." sleep 10 if [[ ${try} -gt 60 ]] ; then echo "ERROR: Max number of re-tries reached, exiting..." exit 1 fi try=$((try + 1)) done sudo apt install -y -q=3 python3.8-minimal python3-pip virtualenv # workaround for https://github.com/pypa/virtualenv/issues/1029 export PS1=${PS1:-} cd "$WORKSPACE" echo "----------------------------------------------------" echo "Info: Create virtualenv to update Jenkins slaves" virtualenv -p python3.8 --quiet --no-site-packages .venv source .venv/bin/activate pip install python-openstackclient echo "----------------------------------------------------" echo "Info : Installing packer version ${PACKER_VERSION}" wget -q "https://releases.hashicorp.com/packer/${PACKER_VERSION}/packer_${PACKER_VERSION}_linux_amd64.zip" -O /tmp/packer.zip unzip /tmp/packer.zip > /dev/null 2>&1 sudo mv -f ./packer /usr/local/bin/packer sudo chmod +x /usr/local/bin/packer echo "----------------------------------------------------" packer -version /bin/rm -f /tmp/packer.zip # shellcheck disable=SC1091 source "/tmp/openrc" echo "----------------------------------------------------" echo "Info: Create backup of existing image" cd "$WORKSPACE" BACKUP_ZONE_ID=$(openstack image list --property name=${IMAGE} -f value -c ID) if [ -z ${BACKUP_ZONE_ID} ] ; then echo "Warning: No previous image found to backup" else openstack image set --name "${IMAGE}-backup-$GIT_COMMIT" "$BACKUP_ZONE_ID" fi echo "----------------------------------------------------" echo "Info: Updating the CI slave image" cd "infra/jenkins/slave-setup/${TARGET}/" packer validate *-ubuntu*.json packer build *-ubuntu*.json echo "----------------------------------------------------"