Merge "Record image versions and pkg/module info after build"

This commit is contained in:
Zuul 2019-03-22 15:08:36 +00:00 committed by Gerrit Code Review
commit 176c70a9aa
1 changed files with 55 additions and 0 deletions

View File

@ -31,6 +31,8 @@ BASE=
WHEELS=
CLEAN=no
TAG_LATEST=no
TAG_LIST_FILE=
TAG_LIST_LATEST_FILE=
declare -a ONLY
declare -a SKIP
@ -127,6 +129,22 @@ function get_loci {
return 0
}
function update_image_record {
# Update the image record file with a new/updated entry
local LABEL=$1
local TAG=$2
local FILE=$3
grep -q "/${LABEL}:" ${FILE}
if [ $? -eq 0 ]; then
# Update the existing record
sed -i "s#.*/${LABEL}:.*#${TAG}#" ${FILE}
else
# Add a new record
echo "${TAG}" >> ${FILE}
fi
}
function build_image_loci {
local image_build_file=$1
@ -254,6 +272,14 @@ function build_image_loci {
docker rm ${USER}_update_img
fi
if [ "${OS}" = "centos" ]; then
# Record python modules and packages
docker run --rm ${build_image_name} bash -c 'rpm -qa | sort' \
> ${WORKDIR}/${LABEL}-${OS}-${OPENSTACK_RELEASE}.rpmlst
docker run --rm ${build_image_name} bash -c 'pip freeze 2>/dev/null | sort' \
> ${WORKDIR}/${LABEL}-${OS}-${OPENSTACK_RELEASE}.piplst
fi
RESULTS_BUILT+=(${build_image_name})
if [ "${PUSH}" = "yes" ]; then
@ -262,11 +288,15 @@ function build_image_loci {
docker push ${push_tag}
RESULTS_PUSHED+=(${push_tag})
update_image_record ${LABEL} ${push_tag} ${TAG_LIST_FILE}
if [ "$TAG_LATEST" = "yes" ]; then
local latest_tag="${DOCKER_REGISTRY}${DOCKER_USER}/${LABEL}:${IMAGE_TAG_LATEST}"
docker tag ${push_tag} ${latest_tag}
docker push ${latest_tag}
RESULTS_PUSHED+=(${latest_tag})
update_image_record ${LABEL} ${latest_tag} ${TAG_LIST_LATEST_FILE}
fi
fi
}
@ -320,6 +350,14 @@ function build_image_docker {
return 1
fi
if [ "${OS}" = "centos" ]; then
# Record python modules and packages
docker run --rm ${build_image_name} bash -c 'rpm -qa | sort' \
> ${WORKDIR}/${LABEL}-${OS}-${OPENSTACK_RELEASE}.rpmlst
docker run --rm ${build_image_name} bash -c 'pip freeze 2>/dev/null | sort' \
> ${WORKDIR}/${LABEL}-${OS}-${OPENSTACK_RELEASE}.piplst
fi
RESULTS_BUILT+=(${build_image_name})
if [ "${PUSH}" = "yes" ]; then
@ -328,11 +366,15 @@ function build_image_docker {
docker push ${push_tag}
RESULTS_PUSHED+=(${push_tag})
update_image_record ${LABEL} ${push_tag} ${TAG_LIST_FILE}
if [ "$TAG_LATEST" = "yes" ]; then
local latest_tag="${DOCKER_REGISTRY}${DOCKER_USER}/${LABEL}:${IMAGE_TAG_LATEST}"
docker tag ${push_tag} ${latest_tag}
docker push ${latest_tag}
RESULTS_PUSHED+=(${latest_tag})
update_image_record ${LABEL} ${latest_tag} ${TAG_LIST_LATEST_FILE}
fi
fi
}
@ -499,6 +541,19 @@ if [ $? -ne 0 ]; then
exit 1
fi
TAG_LIST_FILE=${WORKDIR}/images-${OS}-${OPENSTACK_RELEASE}-versioned.lst
TAG_LIST_LATEST_FILE=${WORKDIR}/images-${OS}-${OPENSTACK_RELEASE}-latest.lst
if [ "${PUSH}" = "yes" ]; then
if is_empty ${ONLY[@]} && is_empty ${SKIP[@]}; then
# Reset image record files, since we're building everything
echo -n > ${TAG_LIST_FILE}
if [ "$TAG_LATEST" = "yes" ]; then
echo -n > ${TAG_LIST_LATEST_FILE}
fi
fi
fi
# Check to see if the BASE image is already pulled
docker images --format '{{.Repository}}:{{.Tag}}' ${BASE} | grep -q "^${BASE}$"
BASE_IMAGE_PRESENT=$?