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
'AWS' 카테고리의 다른 글
[DDB] DynamoDB 에 데이터 쓰기 (0) | 2021.05.26 |
---|---|
[DDB] DynamoDB 세팅하기 (0) | 2021.05.26 |
[Lambda] Serverless 프레임워크 사용하기 (0) | 2021.05.18 |
[ECS] AWS ECS 세팅하기 - 2. 서비스 생성 - 롤링 업데이트 (0) | 2021.05.17 |
[ECS] AWS ECS 세팅하기 - 1. 작업정의 및 클러스터 생성 (0) | 2021.05.17 |