Bitbucket Pipelines로 Google App Engine에 자동 배포하기

modolee·2020년 10월 19일
1
post-thumbnail

새롭게 시작하는 프로젝트에 적용 한 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

파일 검증

자동 배포

소스 PUSH

  • 위의 과정을 모두 따라 했다면, 수정 및 추가 된 파일을 모두 COMMIT 한 후 원격의 develop 브랜치에 PUSH 합니다.

자동 배포 확인

  • 해당 프로젝트 > Pipelines 페이지 로 이동하면 develop 브랜치에서 배포가 진행되는 것을 확인할 수 있습니다.
    각 단계를 클릭하면 상세 실행 명령을 확인할 수 있습니다.

profile
기초가 탄탄한 백엔드 개발자를 꿈꿉니다.

2개의 댓글

comment-user-thumbnail
2020년 10월 20일

멋집니다!

1개의 답글