๐ ์์ฝ
SUMMARY
์ฌ๋ด ํ์ค VCS์ธ Bitbucket ์ง์์ 1์์ ์กฐ๊ฑด์ผ๋ก CI ๋๊ตฌ๋ฅผ ํ์๋ค. ๊ทธ ๊ด๋ฌธ์ ํต๊ณผํ ํ๋ณด๋ค ์ค์์, ๋จ์ํ๊ณ ์ง๊ด์ ์ธ ์ฌ์ฉ์ฑ์ด ๋๋ณด์ธ DroneCI๋ฅผ ๊ณจ๋๋ค. YAML ํ์ดํ๋ผ์ธ์ ์ฟ ๋ฒ๋คํฐ์ค ๋ค์ดํฐ๋ธ๋ผ ์ง๊ธ ํ๊ฒฝ๊ณผ ๊ฒฐ์ด ๋ง์๋ค.
๐ก ๊ฐ์
์ฌ๋ด์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๋ค์ด๋ฉด์, ๋ ๊ฑฐ์์์ ์ฐ๋ Jenkins๋ฅผ ๋์ ํ CI(Continuous Integration) ๋๊ตฌ๊ฐ ํ์ํ๋ค. Jenkins์ ์ด๋๊ฐ ๊ฑธ๋ ธ๋์ง, ์ ๋๊ตฌ์ ๋ญ ์๊ตฌํ๋์ง, ํ๋ณด๋ค์ ์ด๋ป๊ฒ ๊ฑธ๋ ๋์ง๋ฅผ ์ ๋ฆฌํ๋ค.
๐ ์ ์ ๋ฐฐ๊ฒฝ
๋ ๊ฑฐ์ ์๋ฒ์ Jenkins๋ฅผ ๊ทธ๋๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ ์ ์ผ ๋น ๋ฅธ ๊ธธ์ด๊ธด ํ๋ค. ํ์ง๋ง ๊ตณ์ด ์ง์ ๊ทธ๋๋ก ์ง์ด์ง๊ณ ๋์ด์ฌ ์ด์ ๋ฅผ ๋ชป ์ฐพ์๋ค. Jenkins์ ๊ฑธ๋ฆฌ๋ ์ ์ ์ด๋ฏธ ๊ฒช์ ๋งํผ ๊ฒช์๋ค.
- ํ์ดํ๋ผ์ธ ์ค์ :
Jenkinsfile์ Groovy ๊ธฐ๋ฐ์ด๋ผ, ํ์ดํ๋ผ์ธ์ด ๋ณต์กํด์ง๋ฉด ๊ฐ๋ ์ฑ์ด ๊ธ๊ฒฉํ ๋จ์ด์ง๋ค. - ๊ธฐ๋ฅ์ ํ๋ฌ๊ทธ์ธ์ ํฌ๊ฒ ๊ธฐ๋๋๋ฐ, ํ๋ฌ๊ทธ์ธ๋ผ๋ฆฌ ์ถฉ๋ํ๊ฑฐ๋ ๋ฒ์ ๋ฌผ๊ณ ๋์ด์ง๋ ๋ฌธ์ ๊ฐ ์ข ์ข ๋ฌ๋ค.
- ๋ฉ๋ชจ๋ฆฌยทCPU๋ฅผ ์ ๋ฒ ๋จน์ด์ ๊ฒฝ๋ ํ๊ฒฝ์ ๋ถ๋ด์ด์๋ค.
- ์ ์ด์ ์ฟ ๋ฒ๋คํฐ์ค ๊ฐ์ ํด๋ฌ์คํฐ ๋ค์ดํฐ๋ธ ํ๊ฒฝ์ ์ผ๋์ ๋๊ณ ์ค๊ณ๋ ๋ฌผ๊ฑด์ด ์๋๋ผ, ๋์ ์ค์ผ์ผ ์์ ๋ถ์ด๊ธฐ๊ฐ ์ ๋ถํธํ๋ค.
๊ทธ๋์ ์ CI ๋๊ตฌ์ ์ด๋ฐ ๊ฑธ ์๊ตฌํ๋ค.
- Bitbucket ์ง์: ์ฌ๋ด ํ์ค VCS๊ฐ Bitbucket์ด๋ค. ์ด๊ฒ ์ ๋๋ฉด ๋ค๋ฅธ ๊ฒ ์๋ฌด๋ฆฌ ์ข์๋ ํ๋ณด์์ ๋น ์ง๋ค. ์ฌ์ค์ ์ฒซ ๊ด๋ฌธ์ด์๋ค.
- ๋น๋ ํ๊ฒฝ:
Docker container,Maven,Node.js๋น๋๊ฐ ๋ฌด๋ฆฌ ์์ด ๋์์ผ ํ๋ค. - ์ ์ธ์ ํ์ดํ๋ผ์ธ: YAML ๊ธฐ๋ฐ Pipeline as Code๋ฅผ ์ง์ํ ๊ฒ.
- ๋จ์์ฑ: ๊ฐ๋ฐ์๋ค์ด ๊ธ๋ฐฉ ๋ฐฐ์์ ์ธ ์ ์์ ๊ฒ.
- ์ปค๋ฎค๋ํฐ: ๋งํ์ ๋ ์ฐพ์๋ณผ ์๋ฃ๊ฐ ์๊ณ , ๊ณ์ ์ ๋ฐ์ดํธ๋๊ณ ์์ ๊ฒ.
๐ ๋น๊ต
Bitbucket ์ง์ ์ฌ๋ถ๋ฅผ ์ฒซ ํํฐ๋ก ๋๊ณ ํ๋ณด๋ฅผ ๊ฑธ๋ ๋ค.
| ์ด๋ฆ | ์ฅ์ | ๋จ์ ๋ฐ ๋ณด๋ฅ ์ฌ์ |
|---|---|---|
| DroneCI | ์ฟ ๋ฒ๋คํฐ์ค ๋ค์ดํฐ๋ธ, ๊ฐ๋จํ YAML ์ค์ , Bitbucket ์ง์ | ์ผ๋ถ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๋ฃ |
| Tekton | ์ฟ ๋ฒ๋คํฐ์ค ๋ค์ดํฐ๋ธ, CRD ๊ธฐ๋ฐ ๊ฐ๋ ฅํ ํ์ฅ์ฑ | ํ์ต ๊ณก์ ์ด ๋๊ณ ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ์ด ๋ณต์ก |
| Concourse CI | ๋ช ํํ ๊ฐ๋ (ResourceยทTaskยทJob), ๋ฐ์ด๋ UI | ๋ค์ ๋ ์ ์ ์ธ(Opinionated) ์ค๊ณ, ์ปค๋ฎค๋ํฐ๊ฐ ์์ |
| Gitea Actions | GitHub Actions ์ ์ฌ ์ํฌํ๋ก์ฐ, Gitea์ ์๋ฒฝ ํตํฉ | ์์ง ์คํ์ , Gitea ์ธ VCS ์ง์ ๋ฏธํก |
| Woodpecker CI | DroneCI์ ์์ ์คํ์์ค ํฌํฌ, ์ฌ์ด ์ค์ | Bitbucket ๋ฏธ์ง์์ผ๋ก ํ๋ฝ |
๊ฐ์ฅ ์๊น์ ๋ ๊ฑด Woodpecker CI์๋ค. DroneCI๋ฅผ ์คํ์์ค๋ก ํฌํฌํ ๋ฌผ๊ฑด์ด๋ผ ์ค์ ์ด ๊ฐ๋จํ๊ณ ๋ผ์ด์ ์ค ๊ฑฑ์ ๋ ์๋๋ฐ, ํํ Bitbucket์ ๊ณต์ ์ง์ํ์ง ์์ ์ฒซ ๊ด๋ฌธ์์ ๊ฑธ๋ ธ๋ค. Tekton์ ํ์ฅ์ฑ์ ์ต๊ณ ์ง๋ง ์ด๋ฒ ๊ท๋ชจ์ ์ฐ๊ธฐ์ ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ์ด ๊ณผํ๊ณ , Concourse CI๋ ์ค๊ณ ์ฒ ํ์ด ๊ฐํด ํ์ ๊ฐ์ํ๊ธฐ ๋ถ๋ด์ค๋ฌ์ ๋ค. Gitea Actions๋ Gitea ์์์ ๋งค๋ํ์ง๋ง Bitbucket ์ชฝ์ด ์์ง ๋ฏธ๋ฅ์ง ์์๋ค.
โ ์ ์ ์ฌ์
๋จ์ ํ๋ณด ์ค DroneCI๋ก ์ ํ๋ค. ๋ฌด๊ฒ๋ฅผ ๋ ์ง์ ์ ์ด๋ ๋ค.
- Bitbucket ์ง์(ํต์ฌ): ์ฒซ ๊ด๋ฌธ์ด์ ๋ง์ง๋ง๊น์ง ๊ฐ์ฅ ๋ฌด๊ฑฐ์ ๋ ๊ธฐ์ค์ด๋ค. ์ด ํ๋๋ก Woodpecker ๊ฐ์ ์ ๋ง์ฃผ๊น์ง ์๋ ค ๋๊ฐ๊ณ , ๋๋ถ์ ์ ํ์ง๊ฐ ๊น๋ํ๊ฒ ์ขํ์ก๋ค.
- ๋จ์ํ ์ฌ์ฉ์ฑ: Bitbucket์ ์ง์ํ๋ ํ๋ณด๋ค ์ค DroneCI๋ UI์ YAML ํ์ดํ๋ผ์ธ์ด ์ ๋ ๊ฐ๋ช ํ๋ค. ๋ณต์กํ Jenkinsfile์์ ๋ฒ์ด๋ ๋๊ตฌ๋ ํ์ดํ๋ผ์ธ์ ์ฝ๊ณ ์ธ ์ ์๋ค๋ ๊ฒ ์ปธ๋ค. CI๋ฅผ ๋ ํผ์ ์ฐ๋ ๊ฒ ์๋๋ผ ๊ฐ๋ฐ์๋ค์ด ๊ฐ์ด ์จ์ผ ํ๋, ํ์ต ๊ณก์ ์ ๋ฎ์ถ๋ ๊ฒ ๊ณง ๋์ ์ฑ๊ณต๋ฅ ์ด์๋ค.
- ์ฟ ๋ฒ๋คํฐ์ค ๋ค์ดํฐ๋ธ: ๊ฐ ๋จ๊ณ๊ฐ ๊ฒฉ๋ฆฌ๋ ์ปจํ ์ด๋์์ ๋์ ํ๋ฌ๊ทธ์ธ ์์กด์ฑ ๋ฌธ์ ์์ ์์ ๋กญ๊ณ , ํด๋ฌ์คํฐ ๋ฆฌ์์ค๋ ํจ์จ์ ์ผ๋ก ์ด๋ค. Jenkins์์ ๋ต๋ตํ๋ ๋ถ๋ถ์ ์ ํํ ๋ฉ์ ์คฌ๋ค.