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