Bitbucket Pipelines로 Google App Engine에 자동 배포하기
Published in
6 min readOct 19, 2020
새롭게 시작하는 프로젝트에 적용 한 CI/CD 구축 과정을 소개해 보려고 합니다.
개발/배포 환경
- 서버 : Google App Engine
- 소스 관리 : Bitbucket
- CI/CD 툴 : Bitbucket Pipelines
사전 준비
- GCP에서 프로젝트를 위한 App Engine 생성
- 프로젝트에 App Engine 배포를 위한 기본 설정 파일(app.yaml) 생성
- Bitbucket에 프로젝트 소스 저장
GCP IAM 서비스 계정 생성
- GCP 콘솔에서
IAM 및 관리자 > 서비스 계정
페이지로 이동
서비스 계정 만들기
- 서비스 계정 세부 정보
- 서비스 계정 이름 : 지정하고자 하는 계정 이름 (한글 허용 안함)
- 서비스 계정 ID : 기본으로 지정 됨 (변경 가능)
- 서비스 계정 설명 : 계정에 대한 설명 (한글 허용) - 서비스 계정 권한 : 아래의 3가지 권한을 추가해줘야 서비스 계정으로 자동 배포 가능
- App Engine > 배포자
- 프로젝트 > 편집자
- Cloud Storage > 저장소 개체 생성자 - 사용자에게 이 서비스 계정에 대한 액세스 권한 부여 : SKIP
Keyfile 다운로드
- 위에서 생성 한 계정을 서비스 계정 목록에서 확인
- 해당 계정의 가장 오른쪽에 있는 작업에 있는 더보기를 눌러 키 만들기 선택
- 키 유형 : JSON
- 만들기를 누르면 JSON 파일이 다운로드 됨
Bitbucket 설정
Bitbucket Pipelines 활성화
- Bitbucket에서
해당 프로젝트 > Repository settings > PIPELINES > Settings
페이지로 이동 - Enable Pipelines 를 활성화
Keyfile base64 인코딩
- 위에서 다운로드 받은 JSON 파일을 통째로 base64로 인코딩
base64 keyfile_name.json
- 인코딩 된 문자열이 출력되면 해당 문자열 전체를 복사
Bitbucket Repository variables 설정
- Bitbucket에서
해당 프로젝트 > Repository settings > PIPELINES > Repository variables 페이지
로 이동 - Name / Value 쌍으로 입력
- KEY_FILE / 위에서 base64 로 인코딩 한 문자열
- PROJECT / App Engine이 설정 된 GCP 프로젝트ID
(프로젝트 이름과 ID는 다를 수 있음)
- 설정 된 Variables 는 pipelines 설정 파일에서 사용 가능 (예: $KEY_FILE, $PROJECT)
Deployments 환경 별 variables 설정 (선택)
Repository settings > PIPELINES > Deployments 페이지
로 이동- Test environments, Staging environments, Production environments 가 기본적으로 설정되어 있음
- environment는 추가/수정 가능하며, environment 마다 variables 설정이 가능
Bitbucket Pipelines 파일 작성
- 프로젝트 루트에
bitbucket-pipelines.yml
파일 생성
# develop 브랜치에 PUSH하면 Unit Test를 실행하고 App Engine에 배포 되는 설정image: node:alpine
run-test: &run-test
step:
name: Run jest unit test
caches:
- node
script:
- yarn
- yarn test
deploy-dev: &deploy-dev
step:
name: Deploy Develop Branch to App Engine
deployment: gcp-dev
script:
- pipe: atlassian/google-app-engine-deploy:0.7.3
variables:
KEY_FILE: $KEY_FILE
PROJECT: $PROJECT
STOP_PREVIOUS_VERSION: 'true'
DEBUG: 'true'
pipelines:
branches:
master:
- <<: *run-test
develop:
- <<: *run-test
- <<: *deploy-dev
파일 검증
- 아래 URL에서
bitbucket-pipelines.yml
파일에 작성한 내용이 문법적으로 이상이 없는지 확인 가능 - https://bitbucket-pipelines.prod.public.atl-paas.net/validator
자동 배포
소스 PUSH
- 위의 과정을 모두 따라 했다면, 수정 및 추가 된 파일을 모두 COMMIT 한 후 원격의 develop 브랜치에 PUSH 합니다.
자동 배포 확인
해당 프로젝트 > Pipelines 페이지
로 이동하면 develop 브랜치에서 배포가 진행되는 것을 확인할 수 있습니다.- 각 단계를 클릭하면 상세 실행 명령을 확인할 수 있습니다.