diff options
| author | Luke Meyer <lmeyer@redhat.com> | 2017-06-22 15:26:05 -0400 | 
|---|---|---|
| committer | Luke Meyer <lmeyer@redhat.com> | 2017-06-22 15:26:05 -0400 | 
| commit | 3e5dff06fc72f5ef1c4b65d64ec443335c40f795 (patch) | |
| tree | 0a23d09eee0aaf8b49bbbc73c06a4032cad0bfb9 /hack | |
| parent | ea79d8b9efe03e06640cffe8b7e03580a3832c3a (diff) | |
| download | openshift-3e5dff06fc72f5ef1c4b65d64ec443335c40f795.tar.gz openshift-3e5dff06fc72f5ef1c4b65d64ec443335c40f795.tar.bz2 openshift-3e5dff06fc72f5ef1c4b65d64ec443335c40f795.tar.xz openshift-3e5dff06fc72f5ef1c4b65d64ec443335c40f795.zip  | |
releases: enable build/push with multiple tags
Diffstat (limited to 'hack')
| -rwxr-xr-x | hack/build-images.sh | 20 | ||||
| -rwxr-xr-x | hack/push-release.sh | 56 | 
2 files changed, 35 insertions, 41 deletions
diff --git a/hack/build-images.sh b/hack/build-images.sh index ce421178f..6e6d360bf 100755 --- a/hack/build-images.sh +++ b/hack/build-images.sh @@ -47,7 +47,7 @@ if [ "$help" = true ]; then    echo "  default: openshift/origin-ansible"    echo    echo "  --version=VERSION" -  echo "  The version used to tag the image" +  echo "  The version used to tag the image (can be a comma-separated list)"    echo "  default: latest"    echo     echo "  --no-cache" @@ -62,25 +62,33 @@ if [ "$help" = true ]; then    exit 0  fi +  if [ "$verbose" = true ]; then    set -x  fi  BUILD_STARTTIME=$(date +%s)  comp_path=$source_root/ -docker_tag=${prefix}:${version} + +# turn comma-separated versions into -t args for docker build +IFS=',' read -r -a version_arr <<< "$version" +docker_tags=() +for tag in "${version_arr[@]}"; do +  docker_tags+=("-t" "${prefix}:${tag}") +done +  echo  echo -echo "--- Building component '$comp_path' with docker tag '$docker_tag' ---" -docker build ${options} -t $docker_tag $comp_path -BUILD_ENDTIME=$(date +%s); echo "--- $docker_tag took $(($BUILD_ENDTIME - $BUILD_STARTTIME)) seconds ---" +echo "--- Building component '$comp_path' with docker tag(s) '$version' ---" +docker build ${options} "${docker_tags[@]}" $comp_path +BUILD_ENDTIME=$(date +%s); echo "--- ${version} took $(($BUILD_ENDTIME - $BUILD_STARTTIME)) seconds ---"  echo  echo  echo  echo  echo "++ Active images" -docker images | grep ${prefix} | grep ${version} | sort +docker images | grep ${prefix} | sort  echo diff --git a/hack/push-release.sh b/hack/push-release.sh index 131ed83ca..1f41ab179 100755 --- a/hack/push-release.sh +++ b/hack/push-release.sh @@ -1,55 +1,41 @@  #!/bin/bash -# This script pushes all of the built images to a registry. +# This script pushes a built image to a registry.  # -# Set OS_PUSH_BASE_REGISTRY to prefix the destination images +# Set OS_PUSH_BASE_REGISTRY to prefix the destination images e.g. +# OS_PUSH_BASE_REGISTRY="docker.io/"  # +# Set OS_PUSH_TAG with a comma-separated list for pushing same image +# to multiple tags e.g. +# OS_PUSH_TAG="latest,v3.6"  set -o errexit  set -o nounset  set -o pipefail -STARTTIME=$(date +%s) -OS_ROOT=$(dirname "${BASH_SOURCE}")/.. +starttime=$(date +%s) -PREFIX="${PREFIX:-openshift/origin-ansible}" +# image name without repo or tag. +image="${PREFIX:-openshift/origin-ansible}" -# Go to the top of the tree. -cd "${OS_ROOT}" +# existing local tag on the image we want to push +source_tag="${OS_TAG:-latest}" -# Allow a release to be repushed with a tag -tag="${OS_PUSH_TAG:-}" -if [[ -n "${tag}" ]]; then -  tag=":${tag}" -else -  tag=":latest" -fi - -# Source tag -source_tag="${OS_TAG:-}" -if [[ -z "${source_tag}" ]]; then -  source_tag="latest" -fi - -images=( -  ${PREFIX} -) +# Enable retagging a build with one or more tags for push +IFS=',' read -r -a push_tags <<< "${OS_PUSH_TAG:-latest}" +registry="${OS_PUSH_BASE_REGISTRY:-}" +# force push if available  PUSH_OPTS=""  if docker push --help | grep -q force; then    PUSH_OPTS="--force"  fi -if [[ "${OS_PUSH_BASE_REGISTRY-}" != "" || "${tag}" != "" ]]; then -  set -e -  for image in "${images[@]}"; do -    docker tag "${image}:${source_tag}" "${OS_PUSH_BASE_REGISTRY-}${image}${tag}" -  done -  set +e -fi - -for image in "${images[@]}"; do -  docker push ${PUSH_OPTS} "${OS_PUSH_BASE_REGISTRY-}${image}${tag}" +set -x +for tag in "${push_tags[@]}"; do +  docker tag "${image}:${source_tag}" "${registry}${image}:${tag}" +  docker push ${PUSH_OPTS} "${registry}${image}:${tag}"  done +set +x -ret=$?; ENDTIME=$(date +%s); echo "$0 took $(($ENDTIME - $STARTTIME)) seconds"; exit "$ret" +endtime=$(date +%s); echo "$0 took $(($endtime - $starttime)) seconds"; exit 0  | 
