GCP CLOUD BUILD 로 AppEngine에 자동배포 해보기
회사에서 주로 Google Cloud 로 작업하여 매번 배포하기 번거로운 문제점이 있어 cloud build를 활용하여 자동화배포를 구현 해보았다.
- 트리거 생성하기
cloud build 에서 트리거 생성하기를 들어가면 위화면과 같이 이름,지역,태그,이벤트등을 지정할 수 있다. 이벤트 같은 경우 테스트 하기 쉽게 브랜치에 push로 사용 했다.
-git 레퍼지토리에 연결하기
깃 로그인을 할 시 로그인한 계정으로 생성된 깃 레퍼지토리가 나온다 여기서 배포를 위한 소스가 담긴 레퍼지토리를 선택했다. 선택 할 경우 어떤 브랜치의 명령이 있을시 선택하는 곳에서 나는 dev branch를 선택해 줬다.
-배포코드 작성
자동감지 하여 git에 dockerfile과 cloudbuild.yaml을 사용하여 배포 할 수도있고 직접 작성하여 사용할수 있다.
여기 https://cloud.google.com/build/docs/build-config-file-schema?hl=ko 를 참조하여 배포코드를 작성하였다.
steps:
- name: 'node:$_NODE_VERSION'
args:
- npm
- install
- name: 'node:$_NODE_VERSION'
env:
- VUE_APP_MARK=$_MARK
args:
- npm
- run
- build
# 깃소스에 맞게 path 설정
dir: resource
- name: gcr.io/google.com/cloudsdktool/cloud-sdk
args:
- '-c'
- >-
gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy
--appyaml=app_dev.yaml
entrypoint: bash
timeout: 1600s
기존 app.yaml을 사용하는 방식으로 주로 배포를 해왔기에 이런식으로 코드를 작성하였다.
올라가면 따로 설정이 없을시 /workplace 라는 디렉토리에서 시작되고 여기서 특정위치에서 작업을 하기위해 dir을 사용하여 path에 맞게 작업을 실행했다.
name에 노드 버전을 바인딩 할수 있어 배포환경의 버전을 맞출수 있어 편리했던 것 같다.
- 변수 설정 및 세팅
위 사진과 같이 환경변수를 설정할수도 있고 빌드시 승인 등 다양하게 세팅을 할 수있었다.
- 권한 설정
GCP AppEngine에 배포하기 위한 권한을 서비스계정에 주지않으면 permission denied 되어 배포가 진행 되지 않기에 Cloud Build 설정 탭에서 다음과 같이 권한을 부여해 주었다.
다른방법으로는 iam에서 cloudbuild 서비스 계정에서 권한을 줄 수 도 있다.
이렇게 세팅후 설정된 branch에 push를 날려 테스트를 했다.
- build결과 및 로그 보기
cloud build 기록 탭에 가서 성공여부 및 걸린 시간 그리고 진행된 로그를 확인 할수있다.