๐Google Cloud Build ์์ํ๊ธฐ
Source: Dev.to

๐ฅ๏ธ Google Cloud Build๋?
Google Cloud Build๋ Google Cloud์์ ์ ๊ณตํ๋ ์๋ฒ๋ฆฌ์ค CI/CD ํ๋ซํผ์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋, ํ ์คํธ, ๋ฐฐํฌ ๊ณผ์ ์ ์๋ํํฉ๋๋ค.
์ฃผ์ ์ฅ์
- ์๋ฒ๋ฆฌ์ค โ ๋น๋ ์๋ฒ๋ฅผ ํ๋ก๋น์ ๋ํ๊ฑฐ๋ ๊ด๋ฆฌํ ํ์ ์์ด Cloud Build๊ฐ ์ปดํจํ ๋ฆฌ์์ค๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ์๋ ์ค์ผ์ผ๋ง โ ๋น๋ ์์ ๋ฐ๋ผ ์๋์ผ๋ก ํ์ฅยท์ถ์๋๋ฉฐ, ์ฌ์ฉํ ๋น๋ ์๊ฐ๋งํผ๋ง ๋น์ฉ์ ์ง๋ถํฉ๋๋ค.
- ๋จ์ผ ๊ตฌ์ฑ ํ์ผ โ ๋ชจ๋ ๋น๋ ๋จ๊ณ(๋น๋, ํ ์คํธ, ํจํค์ง, ์ด๋ฏธ์ง ํธ์, ๋ฐฐํฌ ๋ฑ)๋ฅผ ํ๋์ YAML ๋๋ JSON ํ์ผ์ ์ ์ํฉ๋๋ค.
- ๋ด์ฅ ์ทจ์ฝ์ ์ค์บ โ CI/CD ์ํฌํ๋ก์ ์ผ๋ถ๋ก ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ ๋ํ ๋ณด์ ์ค์บ์ ์ํํฉ๋๋ค.
- ๋ค์ํ ์์ค ์ฝ๋ ์ ๊ณต์ โ Google Cloud Storage, Cloud Source Repositories, GitHub, Bitbucket ๋ฑ์์ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
- ์ด๋๋ ๋ฐฐํฌ โ VM ์ธ์คํด์ค, Cloud Run, GKE, Firebase ๋๋ ๋ค๋ฅธ ํด๋ผ์ฐ๋์ ๋ฐฐํฌํฉ๋๋ค.
- Cloud Builders โ Docker, Maven, Node, Go, Python ๋ฑ ์ผ๋ฐ์ ์ธ ๋๊ตฌ๊ฐ ํฌํจ๋ ์ฌ์ ๊ตฌ์ถ๋ ๋น๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํด
docker build,npm install,mvn package๋ฑ ๋ช ๋ น์ ์คํํฉ๋๋ค.
๐งฉ ๋น๋ ๊ตฌ์ฑ (cloudbuild.yaml)
Cloud Build์ ํต์ฌ์ ๋น๋ ๊ตฌ์ฑ ํ์ผ์ ๋๋ค. ์ด ํ์ผ์ ์์ค ์ฝ๋์ ํจ๊ป ์ ๊ณตํ๋ฉด Cloud Build๊ฐ ์ด๋ค ๋จ๊ณ๋ฅผ ์คํํ ์ง ํ๋จํฉ๋๋ค.
์ด ํ์ผ์ ๋ฌด์์ธ๊ฐ์?
YAML ๋๋ JSON ํ์ผ๋ก ๋ค์์ ์ ์ํฉ๋๋ค:
- ๋น๋ ๋จ๊ณ
- ์ฌ์ฉํ ๋น๋ ์ด๋ฏธ์ง
- ์คํํ ๋ช ๋ น
- ๋ฐฐํฌ ๋์
- ๋ก๊ทธ ๋ฐ ์ํฐํฉํธ ์ ์ฅ ์์น
์ด๋ค ๋ด์ฉ์ด ๋ค์ด๊ฐ๋์?
- Cloud Build๋ฅผ ์ํ ์ง์๋ฌธ
- ๋จ๊ณ๋ณ ์์
- ๋ฐํ์ ํ๊ฒฝ ์ฌ์
- Docker ์ด๋ฏธ์ง ์ ์
- ์ํฐํฉํธ ์์น
- ๋ฐฐํฌ ์ค์
๋ณดํต ํ์ผ ์ด๋ฆ์ cloudbuild.yaml์
๋๋ค.
๐งฑ ์์: ์์ฃผ ๊ฐ๋จํ Cloud Build ํ์ผ
์๋๋ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ Google Container Registry์ ํธ์ํ๋ ๊ธฐ๋ณธ cloudbuild.yaml ์์์
๋๋ค:
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/myapp', '.']
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/$PROJECT_ID/myapp']
images:
- 'gcr.io/$PROJECT_ID/myapp'
์ด ํ์ผ์ด ํ๋ ์ผ
- Docker ๋น๋๋ฅผ ์ฌ์ฉํด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ํ๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค.
- ์ด๋ฏธ์ง๋ฅผ Google Container Registry์ ํธ์ํฉ๋๋ค.
- ํด๋น ์ด๋ฏธ์ง๋ฅผ ์ต์ข ์ถ๋ ฅ์ผ๋ก ํ์ํฉ๋๋ค.
๐ฏ ๊ฐ๋ฐ์๋ค์ด Cloud Build๋ฅผ ์ฌ๋ํ๋ ์ด์
- ๊ด๋ฆฌํ ์๋ฒ๊ฐ ์์
- ๋น ๋ฅด๊ณ ํ์ฅ ๊ฐ๋ฅํจ
- ๋ชจ๋๋ฆฌ์๊ณผ ๋ง์ดํฌ๋ก์๋น์ค ๋ชจ๋์ ์ ์ฉ ๊ฐ๋ฅ
- Docker, Kubernetes, Cloud Run ๋ฑ ์ง์
- GitHub, GitLab ๋ฑ๊ณผ ์์ฌ์ด ์ฐ๋
- ์ค๊ณ ๋จ๊ณ๋ถํฐ ๋ณด์์ด ๋ด์ฌ๋จ
์ฝ๋ โ ์ปจํ ์ด๋ โ ๋ฐฐํฌ๊น์ง ๋ช ๋ถ ์์ ์๋ฃํ ์ ์์ต๋๋ค.
๐ ๋ง๋ฌด๋ฆฌ ์๊ฐ
Google Cloud Build๋ ์ ์ง ๋ณด์๊ฐ ์ ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ๋ณด์์ด ๋ฐ์ด๋ CI/CD ์๋ฃจ์
์ ์ ๊ณตํฉ๋๋ค. ์ด๋ณด์์๊ฒ๋ ์ถฉ๋ถํ ๊ฐ๋จํ๋ฉด์ ์ ๋ฌธ๊ฐ์๊ฒ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค. cloudbuild.yaml ํ์ผ๋ง ์์ผ๋ฉด ๋๋จธ์ง๋ Cloud Build๊ฐ ์์์ ์ฒ๋ฆฌํฉ๋๋ค.