Issue #3 - f-lab-edu/at_ticket GitHub Wiki
CI/CD๋ฅผ ๊ตฌ์ถํด๋ณด์.
๊ฐ์
์๋ก์ด ์ฝ๋๋ฅผ ๊ฐ๋ฐํ์ฌ, ์๋ฒ์ ์ค์ ๋ก ๋ฐฐํฌ๋ฅผ ํ๊ธฐ ๊น์ง์๋ ๊ธฐ์กด ์ฝ๋์ ํตํฉ, ๋น๋ ํ ์คํธ, ๋น๋, ๋ฐฐํฌ ์๋ฒ์ ๋ฐฐํฌ๊น์ง ๋งค๋ฒ ๋ฐ๋ณต์ ์ธ ์์ ์ ๊ฑฐ์น๊ฒ ๋ฉ๋๋ค.
๋งค๋ฒ ๋ฐ๋ณต๋๋ ๋ณํฉ/๋ฐฐํฌ ์์ ์ ์๋ํ์ํค๊ธฐ ์ํ์ฌ CI/CD ๋๊ตฌ๋ฅผ ๋์ ํ๊ฒ ๋์์ต๋๋ค.
CI/CD ๋?
CI (Continuous Integration) - ์ง์์ ์ธ ํตํฉ
์ฝ๋์ ๋ณ๊ฒฝ์ฌํญ์ ๊ธฐ์กด ์ฝ๋์ ๋ณํฉํ๊ณ , ๋ณํฉํ ์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋ ์ง๋ฅผ ๊ฒ์ฆํ์ฌ ๋ฐฐํฌํ๋ ๊ฒ
CD (Continuous Delivery) - ์ง์์ ์ธ ๋ฐฐํฌ
์ํํธ์จ์ด๊ฐ ์ง์์ ์ผ๋ก ๋ฐฐํฌ๋๋๋ก ํ๋ ๊ฒ. ๋ฐฐํฌ ์๋ํ
CI/ CD ๋๊ตฌ ๋น๊ต
๋๊ตฌ๋ฅผ ์ ํํ๊ธฐ์ ์์ ๋ง์ด ์ฌ์ฉ๋๋ CI/CD ๋๊ตฌ ๋ช๊ฐ์ง๋ฅผ ๋น๊ตํด ๋ณด์์ต๋๋ค.
Jenkins
Java ๊ธฐ๋ฐ์ ์คํ ์์ค ์ ๋๋ค. ์ค๋๋ ๋งํผ ๋ฌธ์์ ํ๋ฌ๊ทธ์ธ์ด ๋ง๊ณ . ๋ค์ํ ์ธํ ์ ํ ์ ์๋ค๋ ์ ์ด ์ฅ์ ์ด๋, ๊ทธ๋งํผ ์ด๊ธฐ ์ธํ ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ , Jenkins๋ฅผ ์ค์นํ์ฌ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๊ด๋ฆฌํด์ฃผ์ด์ผ ํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
GitHub Action
GitHub์์ ์ ๊ณตํ๋ CI/CD๋๊ตฌ์ ๋๋ค. ์ค์ ์ด ๊ฐ๋จํ๊ณ YAML ๊ธฐ๋ฐ ์ํฌ ํ๋ก์ฐ ํ์ผ์ ์์ฑํ์ฌ ์ํฌ ํ๋ก์ฐ ํ์ผ์ ์์ฑํ์ฌ ์์ฝ๊ฒ ์์ ์ ์ ์ํ ์ ์์ต๋๋ค. ์คํํ๊ฒฝ์ด ๊นํ๋ธ์์ ํธ์คํ ๋๊ธฐ ๋๋ฌธ์, ํ๋ผ์ด๋น ํ๊ฒฝ์์๋ ์ถ๊ฐ์ ์ธ ์ค์ ์ด ํ์ํ ์๋ ์๊ณ , ๋ฌด๋ฃ ๋ฒ์ ์ ๊ธฐ๋ฅ์ด ์ ํ์ ์ด๋ผ๋ ๋จ์ ์ด ์์ต๋๋ค.
Travics CI
์์ฉ CI ์๋น์ค ํด์ ๋๋ค. ์น์ผ๋ก ์๋น์ค๊ฐ ์ ๊ณต๋์ด ์ง์ผ๋ก ๋ณ๋์ ์๋ฒ๋ฅผ ์ด์ํ ํ์๊ฐ ์๊ณ . Git Hub, Bit Bucket ๋ฑ์ ๋ ํฌ์งํ ๋ฆฌ์์ ์ฐ๋์ด ์ฌ์ด ๊ฒ์ด ์ฅ์ ์ ๋๋ค. ์์ ์ฉ์ ์ ๋ฃ์ด๊ณ , Jenkins์ ๋นํด ํ๋ฌ๊ทธ์ธ์ด ์ ๋ค๋ ๊ฒ์ด ๋จ์ ์ ๋๋ค.
์ฐ๋ฆฌ์ ์ ํ์?
์ ํฌ๋ Jenkins ๋ฅผ ์ ํํ์์ต๋๋ค. ์ ํฌ ํ์๋ค์ด Jenkins ๋ฅผ ์ฌ์ฉํด๋ณธ ์ ์ด ์์ด์ ์ต์ํ์๊ณ , ๋ค์ํ ํ๋ฌ๊ทธ์ธ์ด ์์ด ์์ธํ ์ค์ ์ด ๊ฐ๋ฅํ๋ค๋ ์ ์ด ๋ง์์ ๋ค์๊ธฐ ๋๋ฌธ์ ๋๋ค.
Jenkins ์ ์ฉํ๊ธฐ
Jenkins๋ฅผ ์ํ ๋ณ๋์ ์๋ฒ๋ฅผ ๋์ง ์๊ณ , atticket์ ๋ฐฐํฌํ ์๋ฒ์ Jenkins์ ์ค์นํ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด CI/CD ๊ณผ์ ์ ๊ตฌ์ถํ์์ต๋๋ค.
1. ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ๊นํ๋ธ์ ํธ์ํ๋ค.
2. ๊นํ๋ธ๊ฐ webhook์ ํตํด, Jenkins๋ก ์์ฒญ์ ๋ณด๋ธ๋ค.
3. Jenkins๊ฐ ๋์ปค๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ ๋ฐ ๋ฐฐํฌ๋ฅผ ํ๋ค
(docker compose๋ฅผ ์ด์ฉํ์ฌ ๋ฐฐํฌ ๊ฐ์ํ)
์ฝ๋๊ฐ main branch ์ Push ๋๋ฉด webhook
์ค์ ์ ํตํ์ฌ Jenkins๊ฐ main branch์ ์ฝ๋๋ฅผ ์๋์ผ๋ก pull ๋ฐ์์ค๊ฒ ๋ฉ๋๋ค.
์ ํฌ ํ๋ก์ ํธ๋ ์๋ธ ๋ชจ๋ ํ๋ก์ ํธ๋ก, ์์ ํ atticket ํ๋ก๊ทธ๋จ์ ๋์ฐ๊ธฐ ์ํด์๋ ์ฌ๋ฌ ๋ชจ๋๋ค์ ์ ๋ถ ์คํ์์ผ์ฃผ์ด์ผ ํ ํ์๊ฐ ์์ต๋๋ค.
์๋ฒ์ ๋ฐฐํฌ์ํฌ ๋๋ ๋ก์ปฌ์์ ๋น๋์ํฌ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐฐํฌ์์๋ docker compose
ํ์ผ์ ์ด์ฉํ์ฌ ๋ฐฐํฌํ๊ฒ ๋ฉ๋๋ค.
docker compose
ํ์ผ์๋ ๋ฐฐํฌ์ ํ์ํ ์ค์ ์ด ์ ํ์ ธ ์์ต๋๋ค.
์ฌ๋ฌ ๋ชจ๋๋ก ์ด๋ฃจ์ด์ง ํ๋ก์ ํธ์ด๊ธฐ ๋๋ฌธ์ ์์นซ ๋ฐฐํฌ์ ์ฌ๋ฌ ๊ณผ์ ์ด ํ์ํ ์ ์์ง๋ง, docker compose
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ๋ฅผ ๊ฐ๋จํ ๋ง๋ค ์ ์์์ต๋๋ค.