CI/CD์ "CI"๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ์๋ํ ํ๋ก์ธ์ค์ธ ์ง์์ ์ธ ํตํฉ(Continuous Integration)์ ์๋ฏธํฉ๋๋ค. ์ง์์ ์ธ ํตํฉ์ด ์ ๋๋ก ๊ตฌํ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ์๋ก์ด ๋ณ๊ฒฝ ์ฌํญ์ด ์ ๊ธฐ์ ์ผ๋ก ๋น๋ ๋ฐ ํ ์คํธ๋ฅผ ๊ฑฐ์ณ ๊ณต์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ณํฉ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ๋ฌ ๋ช ์ ๊ฐ๋ฐ์๊ฐ ๋์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ์ฝ๋ ์์ ์ ํ ๊ฒฝ์ฐ ์๋ก ์ถฉ๋ํ๋ ๋ฌธ์ ๋ฅผ ์ด ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ถ์ฒ : https://www.redhat.com/ko/topics/devops/what-is-ci-cd
ํ์ ๋ฌธํ๊ฐ ํ๋ฐํด์ง๋ฉด์ ์ ์ง๋ณด์์ฑ(maintainable)์ ์ค์์ฑ ๋ํ ๋์์ก๋ค.
์ด๋ฒ ๋ฏธ๋ํ๋ก์ ํธ ๋ฐฑ์๋ ํ์ฅ์ด ๋๋ฉด์, ์ด ๋ถ๋ถ์ ๋ํด์ ๋์ฑ ๋๋ผ๋ ๋ฐ์ด๋ค. ๊น๋ํ ์ฝ๋๋ ์ด๋ ํ ๋ฐฉ๋ฒ๋ก ์ผ๋ก ์ ์ ์ฝ๋๋ผ๊ธฐ ๋ณด๋ค ์ฌ๋ฌ ์ฌ๋์ด ์์ฑ ํ์ด๋ ํ์ฌ๋์ด ์์ฑํ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๊ฒ ๊น๋ํ ์ฝ๋ ๊ฐ๋ค.
์ด์ ๋ฐ๋ผ์ ์ฝ๋ ์คํ์ผ์ ํต์ผํ๊ณ , ๋ฆฌ๋ทฐ ๋ฌธํ๋ฅผ ํตํด์ ๊ฐ๋ฐ์ ๋ํ ์๊ฐ๊ณผ ์ฒ ํ์ ์ผ์น์์ผ, ๋ง์น 'ํ'์ด ํ๋์ ์ง์ฑ์ฒด๊ฐ ๋์ด ๊ฐ๋ฐํ๋ ๋ฏํ ํ๊ฒฝ์ ๋ง๋ค๊ธฐ ์ํด ๊ฐ๋ฐ์๋ค์ ์ฌ๋ฌ๊ฐ์ง ํ์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค์ด๋๊ฐ๊ณ ์๋ค.
push๋ฅผ ์ ํํ์ฌ pull request๋ฅผ ํตํ review ๋ฌธํ๋ฅผ ์ฅ๋ คํ ์ ์๋๋ก ์ธํ ํด๋ณด๊ฒ ๋ค.
๊นํ๋ธ์๋ ์ฐธ์ฌ ์ธ์์ด ์น์ธ(Approve)์ ํด์ผ Pull Request ๋จธ์ง๋ฅผ ํ ์ ์๋๋ก ์ค์ ํ ์ ์๋ ๊ธฐ๋ฅ์ด ์กด์ฌํ๋ค.
์ด ๋ฐฉ๋ฒ์ ํตํด "๋ช ๋ช ์ด์์ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํต๊ณผํด์ผ ํ๋ค"๋ผ๋ ๋ด๋ถ์ ์ผ๋ก ๋ฃฐ์ ๋ง๋ค์ด๋ ์ข์ ๋ฏํ๋ค.
์์ง ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฌธํ๊ฐ ์กํ์ง ์์ ๊ณณ์์ ์ฒ์ ์๋ํ๊ธฐ์๋ ๊ด์ฐฎ๋ค๊ณ ์๊ฐ์ด ๋ ๋ค.
์ฐ์ Approve์ค์ ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์.
๋จผ์ ๋ ํฌ์งํ ๋ฆฌ ์ ํ ์ ๋ค์ด๊ฐ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ ๋ณผ ์ ์๋ค.
์ด๋ค ํ๋ ๋ฒํผ๊ณผ ํจ๊ป ์ ๊ทธ๋ ์ด๋๋ฅผ ํด์ผํ๋ค๋ ํ์ด์ง๊ฐ ๋์ค์๋ ๋ถ๋ค์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ private ์์ public ์ผ๋ก ๋ฐ๊พธ๋ฉด ์ด ํ๋ฉด๊ณผ ๊ฐ์ด ๋ฐ๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ Add branch protection rule ๋ฅผ ํด๋ฆญํด์ค๋ค.
๊ทธ๋ผ ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋์จ๋ค.
1 : ๋ณดํธํ ๋ธ๋์น ๋ช ์ ์ ์ผ๋ฉด ๋๋ค.
2 : merging ํ๊ธฐ ์ ์ ์ต์ ํ์ Approve ์๋ฅผ ์ค์ ํ ์ ์๋ค. ๋ง์ฝ 5๋ช ์ด์ ํ๋ ์๊ท๋ชจ ํ๋ก์ ํธ๋ผ๋ฉด ์ ์ฒด ์ธ์ (์ฆ ์๊ธฐ ์์ ์ ์ ์ธํ 4๋ช ) ์๊ฒ Approve ๋ฅผ ๋ฐ์์ผ์ง๋ง merging ํ ์ ์๋ค.
3 : ์ํ๋ฅผ ์ฒดํฌํ ์ ์๋ค. ํ์ด ์ ํ ์ฝ๋ฉ์ปจ๋ฒค์ ์ด๋ ๋น๋ ๊ณผ์ ์ด ์ ํํ ํต๊ณผํ๋์ง ์ฒดํฌํ ์ ์๋ค.
4 : ๋ชจ๋ Conversation์ Resolve ํด์ผ์ง๋ง merging ํ ์ ์๋ค. ์์ ์ด pr์ ์ฌ๋ ธ์ ๋ ํ์์ด OO ๋ถ๋ถ ์์ ์ด ํ์ํ ๊ฑฐ ๊ฐ๋ค๋ ๋ฆฌ๋ทฐ ์ฝ๋ฉํธ๋ฅผ ๋ ๋ฆฌ๋ฉด ํด๊ฒฐํ Resolve conversation ์ ๋๋ฌ ๋ชจ๋ ํด๊ฒฐ ํด์ผ์ง merging ํ ์ ์๋ค.
์ด๋ ๊ฒ ์ค์ ํ๋ค๋ฉด ํ์๋ค์ ๋ฆฌ๋ทฐ ๋ฐ์๊ณผ ์น์ธ์ ๋ฐ์์ผ์ง๋ง merging์ ํ ์ ์๋ ์ข์ CI๊ฐ ๊ตฌ์ถ๋๋ ๊ฒ ๊ฐ๋ค.
Checkstyle_job์ผ๋ก๋ ์ปค์คํ ๊ตฌ๊ธ ์๋ฐ ์ปจ๋ฒค์ ์ ์ฌ์ฉํ์๊ณ , build_job์ gradle ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ์๋ค. ์ด๋ฐ ์ค์ ์ ํ๋ก์ ํธ์ ๋ฃจํธ ํด๋ ์๋์ .github ๋๋ ํ ๋ฆฌ ์๋์ workflows ๋๋ ํ ๋ฆฌ์ ์๋์ ci.yml ํ์ผ๋ก ์ค์ ํ๋ฉด ๋๋ค.
์ด๋ฐ ์ค์ ์ ๋ง์น๋ฉด PR ํ๋ฉด์์ ์๋์ ๊ฐ์ ํ๋ฉด์ ๋ณผ ์ ์๊ฒ ๋๋ค.
๋๊ธ