github.com/bshelton229/agent@v3.5.4+incompatible/.buildkite/steps/publish-docker-image.sh (about) 1 #!/bin/bash 2 set -euo pipefail 3 4 ## This script can be run locally like this: 5 ## 6 ## .buildkite/steps/publish-docker-image.sh (alpine|ubuntu) imagename (stable|experimental|unstable) <version> <build> 7 ## .buildkite/steps/publish-docker-image.sh alpine buildkiteci/agent:lox-manual-build stable 3.1.1 8 9 dry_run() { 10 if [[ "${DRY_RUN:-}" == "false" ]] ; then 11 "$@" 12 else 13 echo "[dry-run] $*" 14 fi 15 } 16 17 # Convert 2.3.2 into [ 2.3.2 2.3 2 ] or 3.0-beta.42 in [ 3.0-beta.42 3.0 3 ] 18 parse_version() { 19 local v="$1" 20 IFS='.' read -r -a parts <<< "${v%-*}" 21 22 for idx in $(seq 1 ${#parts[*]}) ; do 23 sed -e 's/ /./g' <<< "${parts[@]:0:$idx}" 24 done 25 26 [[ "${v%-*}" == "$v" ]] || echo "$v" 27 } 28 29 release_image() { 30 local tag="$1" 31 echo "--- :docker: Tagging ${target_image}:${tag}" 32 dry_run docker tag "$source_image" "${target_image}:$tag" 33 dry_run docker push "${target_image}:$tag" 34 } 35 36 variant="${1:-}" 37 source_image="${2:-}" 38 codename="${3:-}" 39 version="${4:-}" 40 build="${5:-dev}" 41 42 target_image="buildkite/agent" 43 variant_suffix="" 44 45 if [[ "$variant" != "alpine" ]] ; then 46 variant_suffix="-$variant" 47 fi 48 49 echo "Tagging docker images for $variant/$codename (version $version build $build)" 50 51 # variants of edge/experimental 52 if [[ "$codename" == "experimental" ]] ; then 53 release_image "edge-build-${build}${variant_suffix}" 54 release_image "edge${variant_suffix}" 55 fi 56 57 # variants of stable - e.g 2.3.2 58 if [[ "$codename" == "stable" ]] ; then 59 for tag in $(parse_version "$version") ; do 60 release_image "${tag}${variant_suffix}" 61 done 62 release_image "${variant}" 63 64 # publish latest and stable only from alpine 65 if [[ "$variant" == "alpine" ]] ; then 66 release_image "latest" 67 release_image "stable" 68 fi 69 fi 70 71 # variants of beta/unstable - e.g 3.0-beta.16 72 if [[ "$codename" == "unstable" ]] ; then 73 release_image "beta${variant_suffix}" 74 if [[ "$version" =~ -(alpha|beta|rc)\.[0-9]+$ ]] ; then 75 release_image "${version}${variant_suffix}" 76 fi 77 fi