github.com/weaveworks/common@v0.0.0-20230728070032-dd9e68f319d5/tools/push-images (about)

     1  #!/usr/bin/env bash
     2  
     3  set -o errexit
     4  set -o nounset
     5  set -o pipefail
     6  
     7  QUAY_PREFIX=quay.io/
     8  IMAGES=$(make images)
     9  IMAGE_TAG=$(./tools/image-tag)
    10  
    11  usage() {
    12      echo "$0 [-no-docker-hub]"
    13  }
    14  
    15  NO_DOCKER_HUB=
    16  while [ $# -gt 0 ]; do
    17      case "$1" in
    18          -no-docker-hub)
    19              NO_DOCKER_HUB=1
    20              shift 1
    21              ;;
    22          *)
    23              usage
    24              exit 2
    25              ;;
    26      esac
    27  done
    28  
    29  pids=""
    30  for image in ${IMAGES}; do
    31      if [[ "$image" == *"build"* ]]; then
    32          continue
    33      fi
    34      echo "Will push ${image}:${IMAGE_TAG}"
    35      docker push "${image}:${IMAGE_TAG}" &
    36      pids="$pids $!"
    37  
    38      if [ -z "$NO_DOCKER_HUB" ]; then
    39          # remove the quey prefix and push to docker hub
    40          docker_hub_image=${image#$QUAY_PREFIX}
    41          docker tag "${image}:${IMAGE_TAG}" "${docker_hub_image}:${IMAGE_TAG}"
    42          echo "Will push ${docker_hub_image}:${IMAGE_TAG}"
    43          docker push "${docker_hub_image}:${IMAGE_TAG}" &
    44          pids="$pids $!"
    45      fi
    46  done
    47  
    48  # Wait individually for tasks so we fail-exit on any non-zero return code
    49  for p in $pids; do
    50      wait "$p"
    51  done
    52  
    53  wait