73 lines
1.7 KiB
Bash
Executable File
73 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Bring in the variables from SOLUTION file, supporting
|
|
# nested substitution
|
|
. SOLUTION
|
|
|
|
VARS=($(sed -nE "s,(^[^#][^=]*).*$,\1,pg" SOLUTION))
|
|
for var in ${VARS[@]}; do
|
|
export ${var}
|
|
done
|
|
|
|
RELEASE_INFO=${RELEASE_INFO:-N/A}
|
|
[[ "${RELEASE_INFO}" == "N/A" ]] && {
|
|
TAG=${TAG:-test-build-${OS_DISTRO}-${PACKAGE_STREAM}-$(date +%Y%m%d)}
|
|
} || {
|
|
TAG=${TAG:-test-${OS_DISTRO}-${PACKAGE_STREAM}-${RELEASE_INFO}}
|
|
}
|
|
|
|
if ! docker tag ${CONTAINER}:${TAG} ${REGISTRY_URL}/${CONTAINER}:${TAG}; then
|
|
fail "Unable to tag .../${CONTAINER}:${TAG}"
|
|
fi
|
|
|
|
iter=5
|
|
while (( iter )); do
|
|
echo "Pushing as .../${CONTAINER}:${TAG}"
|
|
if docker push ${REGISTRY_URL}/${CONTAINER}:${TAG}; then
|
|
break
|
|
fi
|
|
echo "Unable to tag and push image to ${REGISTRY_URL}."
|
|
iter=$((iter-1))
|
|
if (( ! iter )); then
|
|
fail "No more tries."
|
|
fi
|
|
echo "Waiting 10s before trying again..."
|
|
sleep 10
|
|
done
|
|
|
|
[[ "${TAG}" =~ "test-*" ]] && {
|
|
cat << EOM
|
|
|
|
This image was pushed with the 'test-' tag prefix:
|
|
|
|
${REGISTRY_URL}/${CONTAINER}:${TAG}
|
|
|
|
If the image looks good, you can promote this build:
|
|
|
|
1. Tag the tree it as ${TAG}
|
|
|
|
git commit -s -a -m "Build of ${TAG/test-}"
|
|
git tag -f ${TAG/test-}
|
|
|
|
2. Remove the 'test-' prefix from the tag:
|
|
|
|
docker tag ${CONTAINER}:${TAG/test-} ${REGISTRY_URL}/${CONTAINER}:${TAG/test-}
|
|
docker push ${REGISTRY_URL}/${CONTAINER}:${TAG/test-}
|
|
|
|
3. Roll this version to the 'latest':
|
|
|
|
docker tag ${CONTAINER}:${TAG/test-} ${REGISTRY_URL}/${CONTAINER}:latest-${OS_DISTRO}-${PACKAGE_STREAM}
|
|
docker push ${REGISTRY_URL}/${CONTAINER}:latest-${OS_DISTRO}-${PACKAGE_STREAM}
|
|
|
|
EOM
|
|
} || {
|
|
cat << EOM
|
|
|
|
This image was pushed:
|
|
|
|
${REGISTRY_URL}/${CONTAINER}:${TAG}
|
|
|
|
EOM
|
|
}
|
|
|