uju's Tech

[GCP] CI/CD 적용기 2탄 - GCP Cloud Build (with docker) 본문

DevOps/GCP

[GCP] CI/CD 적용기 2탄 - GCP Cloud Build (with docker)

ujusy 2021. 5. 27. 13:52

<본 포스팅은 공부 목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>

1탄.

https://uju-tech.tistory.com/79

 

[GCP] CI/CD 적용기 1탄 - CI/CD란 무엇인가

<본 포스팅은공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!> 최근에 한 프로젝트에 리드 개발자로 참여하게 되었다.ㅎㅎ 몇개의 프로젝

uju-tech.tistory.com

 

Google Cloud Platform을 이용하여 ci/cd를 적용해 보겠다..

aws와 비교하여 자료가 많지 않아 블로그 포스팅을 진행하게 되었다.

당연히 회원가입과 로그인은 진행한 상태이다.

1. Cloud Build로 들어와 보자.

트리거로 들어가자.!

2. 저장소 연결 + 트리거 생성

3. 저장소 연결(1)

4. 저장소 연결(2)

필자는 이미 저장소가 연결되어 이미 연결되었다고 나오지만 연결 가능한 저장소가 나오고 체크해주면 된다.!

5. 저장소 연결(3)

푸시 트리거는 만들지 않고 진행하였다.

*6. 트리거 생성 *

Cloud Build GitHub 앱이 나온다.

트리거를 추가해보자. 필자는 master과 dev 이렇게 두 가지 브랜치를 사용하였다.

master은 production branch로 사용하였고 dev는 개발 브랜치로 사용할 예정이었다.

dev와 master모두 pull request가 오면 test를 하고 싶었다.

따라서 아래와 같이 트리거를 설정하였다.

7. 배포 트리거

6번에서 만든 trigger-all은 dev나 main에 pull request 요청이 있을 경우 동작하는 빌드이다.

그렇다면 dev와 main에 merge 될 때 이를 트리거하여 cloud run에 배포하는 빌드가 필요하다.

이는 직접 만들지 않고 cloud run에서 만들 시 자동으로 트리거가 생성된다. 해당 자세한 내용은 3탄에서 설명하도록 하겠다. 아래는 이미 만들어진 build trigger를 캡처한 것이니 참고하면 될 것 같다.

GitHub 미러링에 dev와 master에 각각 merge 될 때 dockerfile build 및 배포를 가능하게 하는 트리거를 생성해 주었다.

내부 내용은 아래와 같다.

Cloud Build의 설정은 여기까지로 완료했다.

대시보드에 들어가 보면

이렇게 pull request 혹은 merge가 될 경우 빌드와 배포 성공 여부를 알려준다.

(저 실패는 아직 마스터에 dockerfile을 안 올려서..)

Cloud Build 설정은 마무리 지었으니 다음 3탄은 Cloud Run 설정 포스팅을 진행하겠습니다.!

Cloud Run까지 설정을 하면 CI/CD 적용 완료!

 

 

 

++ 클라우드 빌드 시 빌드용 yaml이 필요한데 저는 아래와 같이 작성하여 사용했습니다.

cloudbuild.yaml

steps:
  - name: node:12.16.1
    entrypoint: npm
    args: ['ci']
  - name: node:12.16.1
    entrypoint: npm
    args: ['run', 'lint']
  - name: node:12.16.1
    entrypoint: npx
    args: ['sequelize-cli','db:migrate', '--debug']
    env:
      - 'NODE_ENV=ci'
  - name: node:12.16.1
    entrypoint: npm
    args: ['run', 'test']
    env:
      - 'NODE_ENV=ci'
Comments