일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 스프링 배치
- programmers
- gcp ci/cd
- spring Batch
- 사이버보안
- Baekjoon
- cloud run
- 시스템 해킹
- 백준
- gcp cloud build
- Python
- 회고
- nodejs
- gcp
- pwnable.xyz
- 포너블
- 리버싱
- 웹보안
- kotest
- docker
- 프로그래머스
- 웹해킹
- 네트워크
- 보안
- hackctf
- node.js
- Batch
- webhacking.kr
- 파이썬
- sequelize
uju's Tech
[GCP] CI/CD 적용기 2탄 - GCP Cloud Build (with docker) 본문
<본 포스팅은 공부 목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>
1탄.
https://uju-tech.tistory.com/79
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'