최근에 들어서야 프라이빗 레파지토리를 팀 단위로 생성할 수 있지만 이전엔 아니었다. 그래서 많은 형상 관리 툴 중에 Bitbucket을 고려하지 않았나 싶다. 실제로 3명으로 구성된 아주 자그마한 팀일 때 bitbucket을 고려하여 소스를 관리하였다.
Github도 지금은 CI/CD를 파이프라인으로 구현할 수 있지만 bitbucket은 좀 이전에 해당 파이프라인을 가지고 있었다.
Bitbucket으로 개발한 프로젝트 중에 MySQL DB 도커 이미지를 관리하는 레파지토리가 있다. (거의 로컬, 테스트 환경에서 사용하는 스키마 관리 정도..) 해당 레파지토리에 올린 후에 ECS 로 이미지를 빌드해서 업로드하는 플로우가 필요했는데, bitbucket에서 아주 간단하게 해당 파이프라인을 제공한다. 물론 AWS ECS 뿐 아니라 Firebase, S3과 이외에 여러 Deploy를 지원한다. (beanstalk, aws codedeploy, heroku...)
이제 차치하고, 파이프라인.yml을 작성하고 제대로 올라가는지만 확인하면 된다.
bitbucket-pipelines.yml

bitbucket에서 제공해주는 스크립트로도 거의 충분하다.
image: tstrohmeier/awscli:3.6.4
pipelines:
default:
- step:
services:
- docker
script:
- eval $(aws ecr get-login --region ap-northeast-2 --no-include-email)
# docker
- export BUILD_ID=$BITBUCKET_BRANCH-$BITBUCKET_COMMIT
- docker build -t ${AWS_REGISTRY_URL}:$BUILD_ID .
- docker push ${AWS_REGISTRY_URL}:$BUILD_ID
- docker tag ${AWS_REGISTRY_URL}:$BUILD_ID ${AWS_REGISTRY_URL}:latest
- docker push ${AWS_REGISTRY_URL}:latest
이미지를 빌드, ECS로 태그를 달아서 푸시까지 매우 간단하다. 위에서 작성한 환경 변수는 bitbucket에서 아래와 같이 설정 가능하다.

파이프라인 결과 여부도 함께 확인할 수 있다.

'sub_project' 카테고리의 다른 글
Nest.js (0) | 2020.12.31 |
---|---|
마이크로서비스 패턴 1장 (0) | 2020.11.08 |
서버를 컨테이너로 띄우자 (0) | 2020.06.12 |
Elasticsearch Python API (0) | 2017.02.09 |
aws 웹서버 설정 (0) | 2016.04.16 |
댓글