Jenkins Declarative vs Scripted Pipeline: A Developer's Guide to CI/CD Automation
๐ค AI ์ถ์ฒ
์ด ์ฝํ ์ธ ๋ CI/CD ์๋ํ์ ํต์ฌ ๋๊ตฌ์ธ Jenkins์ ํ์ดํ๋ผ์ธ ์์ฑ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ณ ์ถ์ ๋ชจ๋ ๋ ๋ฒจ์ ์ํํธ์จ์ด ๊ฐ๋ฐ์, ๋ฐ๋ธ์ต์ค ์์ง๋์ด, ์์คํ ๊ด๋ฆฌ์์๊ฒ ์ ์ฉํฉ๋๋ค. ํนํ Jenkins๋ฅผ ์ฒ์ ์ ํ๊ฑฐ๋ Declarative์ Scripted ํ์ดํ๋ผ์ธ์ ์ฐจ์ด๋ฅผ ๋ช ํํ ์ดํดํ๊ณ ์์ ์ ํ๋ก์ ํธ์ ์ ํฉํ ๋ฐฉ์์ ์ ํํ๊ณ ์ ํ๋ ๊ฐ๋ฐ์์๊ฒ ์ถ์ฒํฉ๋๋ค.
๐ ์ฃผ์ ํค์๋
ํต์ฌ ๊ธฐ์ : ์ด ์ฝํ ์ธ ๋ ์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ(CI/CD) ์๋ํ์ ํต์ฌ ๋๊ตฌ์ธ Jenkins์ ๋ ๊ฐ์ง ์ฃผ์ ํ์ดํ๋ผ์ธ ์์ฑ ๋ฐฉ์, Declarative์ Scripted์ ์ฐจ์ด์ ์ ๋ช ํํ ์ค๋ช ํ๊ณ ์ค์ ์ฌ์ฉ๋ฒ์ ์๋ดํฉ๋๋ค.
๊ธฐ์ ์ ์ธ๋ถ์ฌํญ:
* ํ์ดํ๋ผ์ธ์ ๊ฐ๋
: ์ฝ๋ ์ปค๋ฐ๋ถํฐ ๋ฐฐํฌ๊น์ง์ ๊ณผ์ ์ ์๋ํํ๋ ๋ ์ํผ๋ก ์ ์ํ๋ฉฐ, ํ
์คํธ ์คํ, ๋น๋ ์์ฑ, ์๋ฒ ๋ฐฐํฌ ๋ฑ์ ๋จ๊ณ๋ฅผ ํฌํจํฉ๋๋ค.
* Declarative Pipeline: ๊ตฌ์กฐํ๋๊ณ ์๊ฒฌ์ด ๋ช
ํํ์ฌ "๋ฌด์์" ํ ์ง Jenkins์๊ฒ ์ง์ํ๋ ๋ฐฉ์์
๋๋ค. Node.js ์ฑ ๋น๋ ๋ฐ ํ
์คํธ ์์ ๋ฅผ ํตํด pipeline
, agent
, stages
, stage
, steps
๋ฑ์ DSL(Domain Specific Language) ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ฅ์ ์ผ๋ก๋ ๊น๋ํ๊ณ ์ฝ๊ธฐ ์ฌ์ด ๋ฌธ๋ฒ, ๋ด์ฅ๋ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ์ฌ์๋ ๊ธฐ๋ฅ, ๊ฐ๊ฒฐํ ์ํฌํ๋ก์ฐ์ ์ ํฉํจ์ ๊ฐ์กฐํฉ๋๋ค.
* Scripted Pipeline: ์์ ํ Groovy ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ "์ด๋ป๊ฒ" ํ ์ง๋ฅผ ์ง์ ์ ์ดํ๋ ๋ฐฉ์์ผ๋ก, ๋ฃจํ ๋ฐ ์ฌ์ฉ์ ์ ์ ๋ก์ง์ ํฌํจํ ๋ณต์กํ ์ํฌํ๋ก์ฐ ๊ตฌํ์ ์ ์ฉํฉ๋๋ค. Node.js ์ฑ ๋น๋ ๋ฐ ํ
์คํธ์ ์ฌ์ฉ์ ์ ์ ํ
์คํธ ๋ชฉ๋ก์ ์ฌ์ฉํ๋ ์์ ๋ฅผ ์ ๊ณตํฉ๋๋ค.
* ๋น๊ต: ๊ฐ๋
์ฑ, ์ ์ฐ์ฑ, ํ์ต ๊ณก๋ฉด ๋ฑ์์ Declarative์ Scripted ํ์ดํ๋ผ์ธ์ ํ๋ก ๋น๊ตํฉ๋๋ค.
* ์ ํ ๊ฐ์ด๋๋ผ์ธ: ๋๋ถ๋ถ์ ๊ฒฝ์ฐ(90%) Declarative๋ฅผ ์ฌ์ฉํ๊ณ , ๋ฃจํ, ๋ณต์กํ ๋ก์ง, ๊ณ ๊ธ ๊ธฐ๋ฅ์ด ํ์ํ ๋ Scripted๋ฅผ ์ฌ์ฉํ๋๋ก ๊ถ์ฅํฉ๋๋ค.
* ์ค์น ๋ฐ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ: Jenkins ๋ค์ด๋ก๋ ๋ฐ ๋ก์ปฌ ์คํ ๋ฐฉ๋ฒ, ์ ํ์ดํ๋ผ์ธ ์์ฑ ๋ฐ ์ฝ๋ ์ฝ์
๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
* ๋ฌธ์ ํด๊ฒฐ ํ: ๊ถํ ์ค๋ฅ, ๊ตฌ๋ฌธ ์ค๋ฅ, ํ๋ฌ๊ทธ์ธ ๋๋ฝ ๋ฑ์ ๋ํ ํด๊ฒฐ์ฑ
์ ์ ์ํฉ๋๋ค.
* ์ถ๊ฐ ํ: ํ์ดํ๋ผ์ธ ๋ฒ์ ๊ด๋ฆฌ(Jenkinsfile), Blue Ocean ํ๋ฌ๊ทธ์ธ ์ฌ์ฉ, ์์ ๋จ์๋ก ์์ํ ๊ฒ์ ์กฐ์ธํฉ๋๋ค.
๊ฐ๋ฐ ์ํฉํธ: Jenkins ํ์ดํ๋ผ์ธ์ ํตํด ๋ฐ๋ณต์ ์ด๊ณ ์๋์ ์ธ ๋น๋ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ์ฌ ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ ํฅ์์ํค๊ณ , ํด๋จผ ์๋ฌ๋ฅผ ์ค์ด๋ฉฐ, ๋น ๋ฅด๊ณ ์์ ์ ์ธ ์ํํธ์จ์ด ๋๋ฆฌ๋ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋ณต์กํ ์ํฌํ๋ก์ฐ๋ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ปค๋ฎค๋ํฐ ๋ฐ์: ์๋ฌธ์์๋ ์ง์ ์ ์ธ ์ปค๋ฎค๋ํฐ ๋ฐ์์ ์ธ๊ธํ์ง ์์ง๋ง, Jenkins๋ CI/CD ๋ถ์ผ์์ ๊ฐ์ฅ ์ค๋๋๊ณ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋๊ตฌ ์ค ํ๋๋ก, ๊ด๋ จ ์ ๋ณด์ ์ง์ ์ปค๋ฎค๋ํฐ๊ฐ ํ๋ถํฉ๋๋ค.