본문 바로가기
AWS

[ECR] 태그명 추가하기

by yonikim 2021. 5. 20.
728x90

리포지토리에도 버전 관리가 필요하다고 하여 태그명과 시맨틱 버저닝(Semantic Versioning: Semver)의 조합을 이용하여 이미지 버전 관리를 하고 있었다. 

Semver 란 소프트웨어의 버전 변경 규칙에 대한 제안 중 하나로, 많은 오픈소스들에서 사용하고 있는 방법이다. 

(참조: https://semver.org/lang/ko/)

 

 

그런데 AWS Elastic Container Services(ECS) 컨테이너 이미지를 올리려면 태그명이 반드시 필요했고, 배포할 때마다 태그명을 수정하여 작업을 생성하기엔 너무나도 귀찮은 일이었기에

AWS Elastic Container Registry(ECR) 에 이미지를 push 할 때 태그명을 하나 더 추가하는 방법을 사용하기로 했다. 

 

▷ bitbucket-pipeline.xml

pipelines:
  tags:
    staging-*:
      - step:
          name: Docker build and push to AWS ECR
          services:
            - docker
          image: atlassian/pipelines-awscli
          deployment: Staging
          script:
            - aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ECR_REPOSITORY
            - IMAGE=$AWS_ECR_REPOSITORY/$AWS_ECR_REPOSITORY_NAME
            - TAG=$BITBUCKET_TAG
            - docker build -t $IMAGE:$TAG . 
              --build-arg ES_HOST=$ES_HOST 
              --build-arg ES_USER=$ES_USER 
              --build-arg ES_PASSWORD=$ES_PASSWORD 
            - docker push $IMAGE:$TAG
            - MANIFEST=$(aws ecr batch-get-image --region $AWS_REGION --repository-name $AWS_ECR_REPOSITORY_NAME --image-ids imageTag=$TAG --query 'images[].imageManifest' --output text)
            - aws ecr put-image 
              --region $AWS_REGION 
              --repository-name $AWS_ECR_REPOSITORY_NAME 
              --image-tag staging 
              --image-manifest "$MANIFEST"

 


 

 

728x90