go.ligato.io/vpp-agent/v3@v3.5.0/docker/dev/push_image.sh (about)

     1  #!/bin/bash
     2  # Usage: examples
     3  #    ./push_image.sh
     4  #    BRANCH_HEAD_TAG=`git describe` ./push_image.sh
     5  #    REPO_OWNER=stanislavchlebec BRANCH_HEAD_TAG=`git describe` ./push_image.sh
     6  #    LOCAL_IMAGE='prod_vpp_agent:latest' IMAGE_NAME='vpp-agent' ./push_image.sh
     7  
     8  # Warning: use only IMMEDIATELY after docker/dev/build.sh to prevent INCONSISTENCIES such as 
     9  #          a) after building image you switch to other branch which will result in mismatch of version of image and its tag
    10  #          b) you do not build the new image but only simply run this script which will result in mismatch version of image and its tag because the image is older than repository 
    11  
    12  set -e
    13  
    14  # detect branch name
    15  BRANCH_NAME="$(git symbolic-ref HEAD 2>/dev/null)" || BRANCH_NAME="(unnamed branch)"     # detached HEAD
    16  BRANCH_NAME=${BRANCH_NAME##refs/heads/}
    17  BRANCH_HEAD_TAG=${BRANCH_HEAD_TAG:-"`git name-rev --name-only --tags HEAD`"}
    18  VERSION=$(git describe --always --tags --dirty)
    19  
    20  LOCAL_IMAGE=${LOCAL_IMAGE:-'dev_vpp_agent:latest'}
    21  REPO_OWNER=${REPO_OWNER:-'ligato'}
    22  IMAGE_NAME=${IMAGE_NAME:-'dev-vpp-agent'}
    23  
    24  #To prepare for future fat manifest image by multi-arch manifest,
    25  #now build the docker image with its arch
    26  #For fat manifest, please refer
    27  #https://docs.docker.com/registry/spec/manifest-v2-2/#example-manifest-list
    28  
    29  BUILDARCH=`uname -m`
    30  
    31  case "$BUILDARCH" in
    32    "aarch64" )
    33      ARCH_SUFFIX='arm64'
    34      ;;
    35  
    36    "x86_64" )
    37      # for AMD64 platform is also used the default image (without suffix -amd64)
    38      ARCH_SUFFIX='amd64'
    39      ;;
    40    * )
    41      echo "Architecture ${BUILDARCH} is not supported."
    42      exit 1
    43      ;;
    44  esac
    45  
    46  
    47  echo "=============================="
    48  echo "Architecture: ${BUILDARCH}"
    49  echo "=============================="
    50  
    51  case "${BRANCH_NAME}" in
    52    "master" )
    53      if [ ${BRANCH_HEAD_TAG} != "undefined" ] ; then
    54        if [ ${BUILDARCH} = "x86_64" ] ; then
    55          # for AMD64 platform is used also the default image (without suffix -amd64)
    56          docker tag ${LOCAL_IMAGE} ${REPO_OWNER}/${IMAGE_NAME}:${BRANCH_HEAD_TAG}
    57          docker push ${REPO_OWNER}/${IMAGE_NAME}:${BRANCH_HEAD_TAG}
    58          docker tag ${LOCAL_IMAGE} ${REPO_OWNER}/${IMAGE_NAME}:latest
    59          docker push ${REPO_OWNER}/${IMAGE_NAME}:latest
    60        fi
    61        docker tag ${LOCAL_IMAGE} ${REPO_OWNER}/${IMAGE_NAME}-${ARCH_SUFFIX}:${BRANCH_HEAD_TAG}
    62        docker push ${REPO_OWNER}/${IMAGE_NAME}-${ARCH_SUFFIX}:${BRANCH_HEAD_TAG}
    63        docker tag ${LOCAL_IMAGE} ${REPO_OWNER}/${IMAGE_NAME}-${ARCH_SUFFIX}:latest
    64        docker push ${REPO_OWNER}/${IMAGE_NAME}-${ARCH_SUFFIX}:latest
    65      else
    66        echo "For branch ${BRANCH_NAME} is no setup for tagging and pushing docker images because HEAD has no tag."
    67      fi
    68      ;;
    69    "(unnamed branch)" )
    70      docker tag ${LOCAL_IMAGE} ${REPO_OWNER}/${IMAGE_NAME}-${ARCH_SUFFIX}:${VERSION}
    71      echo "Repository is in detached HEAD state - please push manually:"
    72      echo docker push ${REPO_OWNER}/${IMAGE_NAME}-${ARCH_SUFFIX}:${VERSION}
    73      ;;
    74    * )
    75      docker tag ${LOCAL_IMAGE} ${REPO_OWNER}/${IMAGE_NAME}-${ARCH_SUFFIX}:${BRANCH_NAME}
    76      docker push ${REPO_OWNER}/${IMAGE_NAME}-${ARCH_SUFFIX}:${BRANCH_NAME}
    77      ;;
    78  esac