Merge "Record image versions and pkg/module info after build"
This commit is contained in:
commit
176c70a9aa
|
@ -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=$?
|
||||
|
|
Loading…
Reference in New Issue