Initial support for taggable dependencies
Introduce a new --no-use-released-parent option to `build-docker-image` that allows specifying whether the parent image uses the same tag as the one that's currently build or the release tag. Default is to use the release tag for parent image, however `build-all-docker-images` script forces it to be the current tag. Change to Dockerfile is coming next. Change-Id: Ief11c9abb722c181ca85f38ee11800dbf4332a5f
This commit is contained in:
parent
844d710a48
commit
047683d12c
@ -27,7 +27,7 @@ function warn {
|
||||
}
|
||||
|
||||
function set_defaults {
|
||||
PREFIX=fedora-rdo-
|
||||
PREFIX=centos-rdo-
|
||||
NAMESPACE=kollaglue
|
||||
}
|
||||
|
||||
@ -56,7 +56,7 @@ function build_image {
|
||||
if [ -x "$dir/build" ]; then
|
||||
printf "\n"
|
||||
info "Building image in $dir"
|
||||
if $dir/build $ARGS; then
|
||||
if $dir/build $ARGS --no-use-released-parent; then
|
||||
success "Successfully built image in $dir"
|
||||
status[$image]="rebuilt"
|
||||
else
|
||||
@ -78,6 +78,7 @@ function init_image {
|
||||
local base_image=$(cat $img_dir/Dockerfile | gawk 'match($0, /^\s*FROM\s+(\S+)/, matches) {print matches[1]}' )
|
||||
base_image=${base_image//%%KOLLA_NAMESPACE%%/$NAMESPACE}
|
||||
base_image=${base_image//%%KOLLA_PREFIX%%/$PREFIX}
|
||||
base_image=${base_image//:%%KOLLA_TAG%%/}
|
||||
|
||||
img_dirs[$image]=$img_dir
|
||||
dependency[$image]=$base_image
|
||||
|
@ -7,6 +7,7 @@ RELEASE_NAMESPACE=kollaglue
|
||||
NAMESPACE=kollaglue
|
||||
PREFIX=centos-rdo-
|
||||
TAG=$(git rev-parse --short HEAD)
|
||||
RELEASE_TAG=icehouse
|
||||
|
||||
usage () {
|
||||
cat <<EOF
|
||||
@ -19,13 +20,14 @@ Options:
|
||||
--push, -p
|
||||
--no-cache, -N
|
||||
--release
|
||||
--no-use-released-parent
|
||||
EOF
|
||||
}
|
||||
|
||||
[ -f $TOPDIR/.buildconf ] && . $TOPDIR/.buildconf
|
||||
[ -f $IMGDIR/.buildconf ] && . $IMGDIR/.buildconf
|
||||
|
||||
ARGS=$(getopt -o hn:t:pN -l help,namespace:,push,release,tag:,no-cache -- "$@") || { usage >&2; exit 2; }
|
||||
ARGS=$(getopt -o hn:t:pN -l help,namespace:,push,release,tag:,no-cache,no-use-released-parent -- "$@") || { usage >&2; exit 2; }
|
||||
|
||||
eval set -- "$ARGS"
|
||||
|
||||
@ -38,7 +40,7 @@ while :; do
|
||||
|
||||
(--release) MODE=release
|
||||
NAMESPACE=$RELEASE_NAMESPACE
|
||||
TAG=latest
|
||||
TAG=$RELEASE_TAG
|
||||
;;
|
||||
|
||||
(--tag|-t) shift
|
||||
@ -57,6 +59,10 @@ while :; do
|
||||
NAMESPACE="$1"
|
||||
;;
|
||||
|
||||
(--no-use-released-parent)
|
||||
USE_CURRENT_TAG=1
|
||||
;;
|
||||
|
||||
(--) break
|
||||
;;
|
||||
|
||||
@ -65,8 +71,14 @@ while :; do
|
||||
shift
|
||||
done
|
||||
|
||||
if [[ $USE_CURRENT_TAG = 1 ]]; then
|
||||
PARENT_TAG=$TAG
|
||||
else
|
||||
PARENT_TAG=$RELEASE_TAG
|
||||
fi
|
||||
|
||||
if [ "$NAMESPACE" = "$RELEASE_NAMESPACE" ] \
|
||||
&& [ "$TAG" = "latest" ] \
|
||||
&& [ "$TAG" = "$RELEASE_TAG" ] \
|
||||
&& ! [ "$MODE" = "release" ]; then
|
||||
|
||||
echo "ERROR: use --release to build a release image" >&2
|
||||
@ -94,6 +106,7 @@ cp -aL $IMGDIR/* $TMPDIR
|
||||
# versions of sed behave differently otherwise
|
||||
sed -i.bak "s/%%KOLLA_NAMESPACE%%/${NAMESPACE}/g" $TMPDIR/Dockerfile
|
||||
sed -i.bak "s/%%KOLLA_PREFIX%%/${PREFIX}/g" $TMPDIR/Dockerfile
|
||||
sed -i.bak "s/%%KOLLA_TAG%%/${PARENT_TAG}/g" $TMPDIR/Dockerfile
|
||||
|
||||
if ! docker build ${BUILDFLAGS} -t "$FULLIMAGE" $TMPDIR; then
|
||||
echo "ERROR: failed to build $FULLIMAGE"
|
||||
|
Loading…
Reference in New Issue
Block a user