본문 바로가기
sub_project

BitBucket Deployment 파이프라인을 만들어보자

by Younji! 2020. 6. 9.

최근에 들어서야 프라이빗 레파지토리를 팀 단위로 생성할 수 있지만 이전엔 아니었다. 그래서 많은 형상 관리 툴 중에 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 aws ecs example

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에서 아래와 같이 설정 가능하다.

repository variables for pipeline

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

pipeline result status

 

'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

댓글