Jenkins (์ ํจ์ค)
๐ ์ ํจ์ค๋??
๋ชจ๋ ์ธ์ด์ ์กฐํฉ๊ณผ ์์ค ์ฝ๋ ๋ ํฌ์งํ ๋ฆฌ์ ๋ํ ์ง์์ ์ธ ํตํฉ(Continuous integration, CI)๊ณผ ์ง์์ ๋ฐฐํฌ(continuous delivery, CD) ํ๊ฒฝ์ ๊ตฌ์ถํ๊ธฐ ์ํ ๋๊ตฌ์
๋๋ค. ๋น๋, ํ
์คํธ, ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ์ฌ ์ํํธ์จ์ด ํ์ง๊ณผ ๊ฐ๋ฐ ์์ฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์ฝ๊ฒ๋งํด์ ๋น์์ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค.โโ (๋๋ ๊ฐ๋ฐ๋งํ ๊ป ๊ท์ฐฎ์๊ฑฐ ๋ค ํด์ค..?๐)
ํธ๋ฆฌํ ์ค์ ๐ง
์น ๊ธฐ๋ฐ์ ์ฝ์๋ก ๋ค์ํ ์ธ์ฆ ๊ธฐ๋ฐ๊ณผ ๊ฒฐํฉ์ด ๊ฐ๋ฅํ๋ฉฐ ๊ถํ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ํตํด ์์ ํ ๋น๋/๋ฐฐํฌ ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์๋ง์ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ ์๋ํ ํ ์ ์์ด ๋ฐ๋ณต๋๋ ์์ ์ ์ค์ผ ์ ์์ต๋๋ค. ๋น๋/๋ฐฐํฌ์ ๊ฒฐ๊ณผ์ ๋ํด ํต์ง ๋ฐ์ ์ ์๋ ์ค์ ์ด ๊ฐํธํ๊ณ ๋ค์ํ ์ฑ๋์ ํตํด ๋น ๋ฅด๊ฒ ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์์ต๋๋ค.
๋ํ์ ์ธ ํ๋ฌ๊ทธ์ธ : Credentiais Plugin, Gid Plugin, Pipeline ๋ฑ๋ฑ
์ฒ์ ์ฌ์ฉํ ๋ ๊ทธ๋ฅ Recommend ํด์ฃผ๋ ๊ฒ์ ๊น๋ฉด ์ด์ง๊ฐํ ๊ฒ์ ๋ค ๊น๋ ค์์ต๋๋ค.
๐ ํ๋ฌ๊ทธ์ธ๋ณ ์คํญ ์ข ๋ฅ
์์ ์ ์ธ ๋น๋/๋ฐฐํฌ ํ๊ฒฝ ๐ป
์์ค ๋ฒ์ ๊ด๋ฆฌ ํด๊ณผ ์ฐ๋ํ์ฌ ์ฝ๋ ๋ณ๊ฒฝ์ ๊ฐ์งํ๊ณ , ์๋ํ ํ ์คํธ๋ฅผ ํฌํจํ ๋น๋๋ฅผ ์ํํ์ฌ ์ํํธ์จ์ด ํ์ง์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์๋ํ ํ ์คํธ์๋ ์ฝ๋ฉ ํ์ค ์ค์ ์ฌ๋ถ ์ฒดํฌ, ์ ๋ ํ ์คํธ, ํตํฉ ํ ์คํธ ๋ฑ์ ์ค์ ํ ์ ์๊ณ ํ ์คํธ ๊ฒฐ๊ณผ์ ๋ํ ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์ฌ์ ์ธ ์ค๋ฅ๋ฅผ ์ฌ์ ์ ์๋ฐฉํ ์ ์์ต๋๋ค. ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ง์์ ์ผ๋ก ๋ฐฐํฌํ๋๋ก ์ค์ ํ์ฌ ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ ์ฒด๋ฅผ ์๋ํํ ์ ์์ต๋๋ค.
๋ค์ํ ํ์ฉ ๋ฐ ์์ฌ์ด ํ์ฅ ๐โ๐โ๐ฅค
Jenkins๋ ๋ง์ด ์ฌ์ฉ ๋๊ณ ์๋ ์คํ ์์ค ์ํํธ์จ์ด๋ก ๋ฌธ์ํ๊ฐ ์ ๋์ด ์์ต๋๋ค. ๋น๋/๋ฐฐํฌ ์ด์ธ์๋ ์ค์ผ์ฅด๋ง์ ์ด์ฉํ ๋ฐฐ์น ์์ ์๋ ํ์ฉ๋๋ ๋ฑ ๋ค์ํ ์ ์ฉ ์ฌ๋ก๋ค์ ์ฐธ๊ณ ํ ์ ์์ต๋๋ค. ํ๋ฌ๊ทธ ์ธ์ ์ง์ ๊ฐ๋ฐํ์ฌ ๊ธฐ๋ฅ์ ํ์ฅํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค.
์ ํจ์ค๊ฐ ์ฃผ๋ ์ด์ ๐
- ํ๋ก์ ํธ ํ์ค ์ปดํ์ผ ํ๊ฒฝ์์์ ์ปดํ์ผ ์ค๋ฅ ๊ฒ์ถ
- ์๋ํ ํ ์คํธ ์ํ
- ์ ์ ์ฝ๋ ๋ถ์์ ์ํ ์ฝ๋ฉ ๊ท์ฝ ์ค์์ฌ๋ถ ์ฒดํฌ
- ํ๋กํ์ผ๋ง ํด์ ์ด์ฉํ ์์ค ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ๋ณํ ๊ฐ์
- ๊ฒฐํฉ ํ ์คํธ ํ๊ฒฝ์ ๋ํ ๋ฐฐํฌ์์
๊ฐ์ข ๋ฐฐ์น ์์ ์ ๊ฐ๋ตํ
ํ๋ก์ ํธ ๊ธฐ๊ฐ ์ค์ ๊ฐ๋ฐ์๋ค์ ์์ํ ๊ฐ๋ฐ ์์ ์ด์ธ์ DB์ ์ ์ด๋ ํ๊ฒฝ์ค์ , Deploy์์ ๊ณผ ๊ฐ์ ๋จ์ ์์ ์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ๋ค์ด๋ ๊ฒฝ์ฐ๊ฐ ๋น๋ฒํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์ถ, ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ก์ Deploy, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฆด๋ฆฌ์ฆ์ ๊ฐ์ด ์ด์ ์ CLI๋ก ์คํ๋๋ ์์ ๋ค์ด ์ ํจ์ค ๋๋ถ์ ์น ์ธํฐํ์ด์ค๋ก ์์ฝ๊ฒ ๊ฐ๋ฅํด์ก์ต๋๋ค.
Build ์๋ํ์ ํ๋ฆฝ
๋น๋ ํด์ ๊ฒฝ์ฐ Java๋ maven๊ณผ gradle์ด ์๋ฆฌ์ก๊ณ ์์ผ๋ฉฐ, ์ด๋ฏธ ๋น๋ ๊ด๋ฆฌ ํด์ ์ด์ฉํด ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์๋ค๋ฉด ์ ํจ์ค๋ฅผ ์ฌ์ฉํ์ง ์์ ์ด์ ๊ฐ ์์ต๋๋ค. ์ ํจ์ค์ ์ฐ๋ํ์ฌ ๋น๋ ์๋ํ๋ฅผ ํตํด ํ๋ก์ ํธ ์งํ์ ํจ์จ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์๋ํ ํ ์คํธ
์๋ํ ํ ์คํธ๋ ์ ํจ์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฐ์ฅ ํฐ ์ด์ ์ค ํ๋์ด๋ฉฐ, ์ฌ์ค์ ์๋ํ ํ ์คํธ๊ฐ ํฌํจ๋์ง ์์ ๋น๋๋ CI์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํ๋ค๊ณ ๋ด๋ ๋ฌด๋ฐฉํฉ๋๋ค. ์ ํจ์ค๋ Subversion์ด๋ Git๊ณผ ๊ฐ์ ๋ฒ์ ๊ด๋ฆฌ์์คํ ๊ณผ ์ฐ๋ํ์ฌ ์ฝ๋ ๋ณ๊ฒฝ์ ๊ฐ์งํ๊ณ ์๋ํ ํ ์คํธ๋ฅผ ์ํํ๊ธฐ ๋๋ฌธ์ ๋ง์ฝ ๊ฐ์ธ์ด ๋ฏธ์ฒ ์ค์ํ์ง ๋ชปํ ํ ์คํธ๊ฐ ์๋ค ํ์ฌ๋ ๋ ๋ ํ ์์ ๋ง์ด ๋์ด์ค๋๋ค. ์ ๋๋ก ํ ์คํธ๋ฅผ ๊ฑฐ์น์ง ์์ ์ฝ๋๋ฅผ ์ปค๋ฐํ๊ฒ ๋๋ฉด ํ๋ ์ ํจ์ค๋ฅผ ๋ง๋๊ฒ ๋ฉ๋๋ค.
์ฝ๋ ํ์ค ์ค์์ฌ๋ถ ๊ฒ์ฌ ๐
์๋ํ ํ ์คํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ธ์ด ๋ฏธ์ฒ ์ค์ํ์ง ๋ชปํ ์ฝ๋ ํ์ค ์ค์ ์ฌ๋ถ์ ๊ฒ์ฌ๋ ์ ์ ๋ถ์์ ํตํ ์ฝ๋ ํ์ง ๊ฒ์ฌ๋ฅผ ๋น๋ ๋ด๋ถ์์ ์ํํจ์ผ๋ก์จ ๊ธฐ์ ์ ๋ถ์ฑ์ ๊ฐ์์๋ ํฌ๊ฒ ๊ธฐ์ฌํฉ๋๋ค.
๋น๋ ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ ๐ฉ
2๊ฐ ์ด์์ ๋ชจ๋๋ก ๊ตฌ์ฑ๋๋ ๋ ์ด์ด๋ ์ํคํ ์ฒ๊ฐ ์ ์ฉ ๋ ํ๋ก์ ํธ์๋ ๊ทธ์ ๋ฐ๋ ๋น๋ ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ์ด ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด, ๋๋ฉ์ธ -> ์๋น์ค -> UI์ ๊ฐ์ด ๊ฐ ๋ ์ด์ด์ ์ฐธ์กฐ ๊ด๊ณ์ ๋ฐ๋ผ ์์ฐจ์ ์ผ๋ก ๋น๋๋ฅผ ์งํํ์ง ์์ผ๋ฉด ์๋ฉ๋๋ค. ์ ํจ์ค์์๋ ์ด๋ฌํ ๋น๋ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑ์ ๊ฐ๋จํ ํ ์ ์์ผ๋ฉฐ, ์คํฌ๋ฆฝํธ๋ฅผ ํตํด์ ๋งค์ฐ ๋ณต์กํ ์ ์ด๊น์ง๋ ๊ฐ๋ฅํฉ๋๋ค.