X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=blobdiff_plain;f=shell%2Fupdate-cloud-images.sh;h=2503a1e3e21a0a549a85a91c053561557642bfeb;hb=532e97b5b965cab5ace406d8ecc845afc98920ac;hp=d3cd18fcf9e8f9c1b88f448df07d433d4126d199;hpb=381cc03ffab74fb347bd1d8a17e7bc2703111650;p=releng%2Fglobal-jjb.git diff --git a/shell/update-cloud-images.sh b/shell/update-cloud-images.sh index d3cd18fc..2503a1e3 100644 --- a/shell/update-cloud-images.sh +++ b/shell/update-cloud-images.sh @@ -18,22 +18,21 @@ # 4. Update the image{s} in the config files and yaml files # 5. Push the change to Gerrit -virtualenv "/tmp/v/openstack" -# shellcheck source=/tmp/v/openstack/bin/activate disable=SC1091 -source "/tmp/v/openstack/bin/activate" -pip install --upgrade --quiet "pip<10.0.0" setuptools -pip install --upgrade --quiet python-openstackclient -pip freeze +echo "---> update-cloud-images.sh" -set -e +set -euf -o pipefail + +# shellcheck disable=SC1090 +source ~/lf-env.sh + +lf-activate-venv python-openstackclient mkdir -p "$WORKSPACE/archives" -echo "List of images used on the source repository:" -grep -Er '(_system_image:|IMAGE_NAME)' \ ---exclude-dir="global-jjb" --exclude-dir="common-packer" \ -| grep ZZCI | awk -F: -e '{print $3}' \ -| grep '\S' | tr -d \'\" | sort -n | uniq \ -| tee "$WORKSPACE/archives/used_image_list.txt" +echo "INFO: List of images in use on the source repository:" +grep -Er '(_system_image:|IMAGE_NAME)' \ + --exclude-dir="global-jjb" --exclude-dir="common-packer" \ + | grep -oP 'ZZCI\s+.*\d+-\d+\.\d+' | sort -n | uniq \ + | tee "$WORKSPACE/archives/used_image_list.txt" while read -r line ; do image_in_use="${line}" @@ -42,34 +41,39 @@ while read -r line ; do image_type="${line% -*}" # Get the latest images available on the cloud, when $NEW_IMAGE_NAME env # var is unset and update all images on Jenkins to the latest. - if [[ ${NEW_IMAGE_NAME} != all ]]; then + if [[ $NEW_IMAGE_NAME != all ]]; then new_image=${NEW_IMAGE_NAME} new_image_type="${NEW_IMAGE_NAME% -*}" # get the $new_image_type to check the image type is being compared - [[ ${new_image_type} =~ ${image_type} ]] && continue + if [[ ${new_image_type} != "${image_type}" ]]; then + echo "INFO: Image type does not match, continue ..." + continue + fi else new_image=$(openstack image list --long -f value -c Name -c Protected \ - | grep "${image_type}.*False" | tail -n-1 | sed 's/ False//') + | grep "${image_type}.*False" | tail -n-1 | sed 's/ False//') \ + || true fi - [[ -z ${new_image} ]] && continue + [[ -z $new_image ]] && continue + echo "INFO: Found image type match, compare timestamps." - # strip the timestamp from the image name amd compare + # strip the timestamp from the image name new_image_isotime=${new_image##*- } image_in_use_isotime=${image_in_use##*- } - # compare timestamps + # Remove '-' & '.' from the timestamp and perform numeric compare if [[ ${new_image_isotime//[\-\.]/} -gt ${image_in_use_isotime//[\-\.]/} ]]; then # generate a patch to be submited to Gerrit - echo "Update old image: ${image_in_use} with new image: ${new_image}" - grep -rlE '(_system_image:|IMAGE_NAME)' | xargs sed -i "s/${image_in_use}/${new_image}/" + echo "INFO: Update old image: $image_in_use with new image: $new_image" + grep -rlE '(_system_image:|IMAGE_NAME)' \ + | xargs sed -i "s/${image_in_use}/${new_image}/" # When the script is triggered by upstream packer-merge job # update only the requested image and break the loop - [[ ${NEW_IMAGE_NAME} != all ]] && break + [[ $NEW_IMAGE_NAME != all ]] && break else - echo "No new image to update: ${new_image}" + echo "INFO: No new image to update: $new_image" fi done < "$WORKSPACE/archives/used_image_list.txt" -git remote -v -git status git diff > "$WORKSPACE/archives/new-images-patchset.diff" git add -u +git status