gitlab-runner๋ฅผ ์น์๋ฒ์ ์ค์นํ๊ณ
gitlab ๋ ํฌ์งํฐ๋ฆฌ์์ ์์ฑํ .yml ์ฝ๋์ commit ๋ ๋๋ง๋ค ๋ฐฐํฌํ๋๋ก ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ok!
์ํ์จ์ด ๊ณตํ์์ CI/CD ๋๋ CICD๋ ์ผ๋ฐ์ ์ผ๋ก ์ง์์ ํตํฉ(continuous integration) ๋๋ ์ง์์ ์ธ ์ ๋ฌ(Continous delivery)/์ง์์ ์ธ ๋ฐฐํฌ(continuous deployment)๋ฅผ ์กฐํฉํ ๊ด์ต?(practice)์ ์๋ฏธํ๋ค.
๊ธฐ์
ํ๋ณด(coporate communication)์ ๋งฅ๋ฝ์์,
CI/CD๋ ๊ธฐ์
์ ์ ์ฒด์ฑ(coporate identity)๊ณผ ๊ธฐ์
๋์์ธ(corporate design)์ ์ ๋ฐ์ ์ธ ๊ณผ์ ์ ์๋ฏธํ ์ ์๋ค
CI/CD๋ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ ๋จ๊ณ๋ก ์๋ํํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ณ ๊ฐ์๊ฒ ์์ฃผ ๋ฐฐํฌ(deliver)ํ๋ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
CI/CD์ ์ฃผ๋ ๋ฉ์ธ ์ฝ์
ํธ๋ ์ง์์ ์ธ ํตํฉ(integration)/์ ๋ฌ(delivery)/๋ฐฐํฌ(development)์ด๋ค.
CI/CD๋ ๊ฐ๋ฐ/์ด์ํ์๊ฒ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ ์๋ก์ด ์ฝ๋๋ฅผ ํตํฉํ๋ ๋ฌธ์ (integration hell)์ ๋ํ ํด๊ฒฐ์ฑ
์ด๋ค.
๊ตฌ์ฒด์ ์ผ๋ก, CI/CD๋ ํตํฉ/ํ
์คํธ ๋จ๊ณ๋ถํฐ ์ ๋ฌ/๋ฐฐํฌ๊น์ง์ ์ด๋ฅด๋ ์์ฉํ๋ก๊ทธ๋จ์ ๋ผ์ดํ์ฌ์ดํด ์ ๋ฐ์ ๊ฑธ์น ์๋ํ์ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ ์ ์ํ๋ค.
์ด ๋ชจ๋ ๊ฒ์ ํจ๊ป ์ฐ๊ฒฐ๋์๋ค๊ณ ํ์ฌ ์ข
์ข
'CI/CD ํ์ดํ๋ผ์ธ'์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์ ์์ผ ๋ฐฉ์์ผ๋ก "๊ฐ๋ฐ๊ณผ ์ด์ํ์ ํ์
(development and operations teams working together)"์ผ๋ก ์ง์ง๋๊ณ ์๋ค.
CI/CD๋ ์กฐ๊ธ์ ๋ค๋ฅธ ์๋ฏธ์ ์ค์๋ง์ ๊ฐ์ง๊ณ ์๋ค.
CI/CD์ 'CI'๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ์๋ํ๋ ํ๋ก์ธ์ค์ธ,
'์ง์์ ์ธ ํตํฉ(continuous integration)'์ ์๋ฏธํ๋ค.
์ฑ๊ณต์ ์ธ CI๋ ์ฑ์ ์ ์ฉ๋๋ ์๋ก์ด ์ฝ๋๊ฐ ์ ๊ธฐ์ ์ผ๋ก build/test/merge๋จ์ ์๋ฏธํ๋ค.
์ด๋ ๊ฐ๋ฐ๋จ๊ณ์์ ๋๋ฌด ๋ง์ ๋ธ๋์น๊ฐ ์๊ณ , ์๋ก๊ฐ ์ถฉ๋๋ ์ง๋ ๋ชจ๋ฅธ๋ค๋ ๊ฒ์ ๋ํ ํด๊ฒฐ์ฑ
์ด๋ค.
CI/CD์ 'CD'๋ ์ง์์ ์ธ ์ ๋ฌ(delivery)/๋ฐฐํฌ(deployment)๋ฅผ ์๋ฏธํ๋ค.
์ ๋ฌ/๋ฐฐํฌ ๋ชจ๋ ํ์ดํ๋ผ์ธ์ ๋ ๋์๊ฐ ๋จ๊ณ๋ฅผ ์๋ํํ์ง๋ง,
์ ๋ฌ/๋ฐฐํฌ๋ ๊ฐ๋ ์ผ๋ง๋ ์๋ํ๊ฐ ์ด๋ค์ง๊ณ ์๋์ง๋ฅผ ๋ํ๋ด๊ธฐ ์ํด์ ๊ตฌ๋ถ๋์ด ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
์ง์์ ์ธ ์ ๋ฌ(delivery)์ ๋ณดํต ๊ฐ๋ฐ์์ ์ฑ์ ๋ํ ๋ณํ๊ฐ ์๋์ ์ผ๋ก ๋ฒ๊ทธ ํ
์คํธ๋๊ณ ,
์ด์ํ์ ์ํด์ live production ํ๊ฒฝ์ deploy๋ ์ ์๋ ๋ ํผ์งํ ๋ฆฌ์ ์
๋ก๋ ๋๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ด๋ ๊ฐ๋ฐํ๊ณผ ๋น์ฆ๋์ค ํ ๊ฐ์ ๋ถ์กฑํ ๊ฐ์ํ์ ์ปค๋ฎค๋์ผ์ด์
๋ฌธ์ ์ ํด๋ต์ด ๋๋ค.
๊ทธ ๋ฌธ์ ๋ฅผ ๋๋ด๊ธฐ ์ํด์๋,
์ง์์ ์ธ ์ ๋ฌ(delivery)์ ๋ชฉ์ ์ ์๋ก์ด ์ฝ๋๋ฅผ ๋ฐฐํฌํ๋๋ฐ ์ต์ํ์ ๋
ธ๋ ฅ์ด ๋ ๋ค๋ ๊ฒ์ ํ์คํ ํ๊ธฐ ์ํจ์ด๋ค.
์ง์์ ์ธ ๋ฐฐํฌ(CD, Continuous Deployment)๋
์๋ํ์ ์ผ๋ก ๋ ํฌ์งํฐ๋ฆฌ์์ ์ ํ(๊ณ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋)์ผ๋ก ๊ฐ๋ฐ์์ ๋ณํ๋ฅผ ๋ฆด๋ฆฌ์ฆ ํ ์ ์์์ ์๋ฏธํ๋ค.
CD๋ ์ฑ ์ ๋ฌ(delivery)์ ๋ฆ์ถ๋ ๋ฉ๋ด์ผ ํ๋ก์ธ์ค๋ก ์ธํ ์ด์ํ์ ์ค๋ฒ๋ก๋ฉ ๋ฌธ์ ๋ฅผ ์ค๋ช
ํ๋ค.
ํ์ดํ๋ผ์ธ์์์ ๋ค์ ๋จ๊ณ๋ฅผ ์๋ํํจ์ผ๋ก์จ CD์ ์ด์ ์ ๋ง๋ ๋ค.
๊ฐ๋จํ๊ฒ,
CI/CD๋ ํ๋ก์ธ์ค๋ค
์ข
์ข
ํ์ดํ๋ผ์ธ์ ํํ๋ก ์๊ฐํ๋๋ค
๋์ ์์ค์ ์๋ํ์ ์ฑ๊ฐ๋ฐ์ ๋ํ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ ํฌํจํ๋ค.
ํ๋ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์์์ ๋ชฉ์ ์, ์ฌ๋ฌ ๊ฐ๋ฐ์๋ค์ด ํต์์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋, ํ๋ฃจ์ ๋ชจ๋ ๋ธ๋์น๋ค์ ์ฝ๋๋ฅผ mergeํ๋ค๋ฉด,
๊ทธ ๊ฒฐ๊ณผ๋ ๋น๊ทน์ ์ด๊ณ , ๊ณ ๋๊ณ , ์๊ฐ์ด ๋ง์ด ๋๋ ์์
์ด ๋ ๊ฒ์ด๋ค.
๊ทธ๋์!
CI๋ ๊ฐ๋ฐ์๋ค์ ๊ทธ๋ค์ ์ฝ๋๋ฅผ ์์ดํ ๋ธ๋์น์ ๋ค์ mergeํ๋ ๊ฒ์ ๋์์ค๋ค.
ํ๋ฒ ๊ฐ๋ฐ์๊ฐ ์์ฉํ๋ก๊ทธ๋จ์ ๋ณ๊ฒฝํ ๊ฒ์ด merge๋๋ฉด, ๊ทธ ๋ณ๊ฒฝ์ฌํญ์ ์๋์ ์ผ๋ก ์์ฉํ๋ก๊ทธ๋จ์ ๋น๋ํ๊ณ ๋ค๋ฅธ ๋ ๋ฒจ์ ์๋ํ๋ ํ
์คํธ๋ก ๊ฒ์ฆ(validate)๋๋ค.
CI์์์ build/unit์ ์๋ํ์ ํตํฉํ
์คํธ, ์ง์์ ์ธ delivery๋
๊ฒ์ฆ๋ ์ฝ๋๊ฐ ๋ ํผ์งํ ๋ฆฌ๋ก ๋ฆด๋ฆฌ์ฆ๋๋ ๊ฒ์ ์๋ํํ๋ค.
ํจ๊ณผ์ ์ธ CD ํ๋ก์ธ์ค๋ฅผ ์ํด์๋ CI๊ฐ ๋น์ ์ ๊ฐ๋ฐ ํ์ดํ๋ผ์ธ์ ์ด๋ฏธ ๊ตฌ์ฑ๋์ด์์ด ํจ์ ๊ฐ์กฐํ๋ค.
CI์ ๋ชฉํ๋ production ํ๊ฒฝ์ผ๋ก ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ฐ๋ ๊ฒ์ด๋ค.
CD์์, merget/delivery/buใ
๋ค์ ์๋ํ์ ์ฝ๋ ๋ฆด๋ฆฌ์ฆ ์๋ํ๋ฅผ ํฌํจํ๋ค.
์ด๋ฌํ ๊ณผ์ ์ ๋์๋,
์ด์ํ์ด production์ผ๋ก ๋น ๋ฅด๊ฒ ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์๋ค.
์ฑ์ํ CI/CD ํ์ดํ๋ผ์ธ์ ๋ง์ง๋ง ๋จ๊ณ๋ ์ง์์ ์ธ ๋ฐฐํฌ์ด๋ค.
์ฝ๋ ๋ ํผ์งํ ๋ฆฌ์ production-ready ๋น๋ ๋ฆด๋ฆฌ์ฆ๋ฅผ ์๋ํํ๋ CD์ ํ์ฅ์ผ๋ก,
CD๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ํ์ผ๋ก ๋ฆด๋ฆฌ์ฆํ๋ ๊ฒ์ ์๋ํํ๋ค.
์๋ํ๋ฉด, production ์ ํ์ดํ๋ผ์ธ ๋จ๊ณ์๋ ์ ํํ๋ ๊ฒ์ด ์์ด์,
CD๋ ์ ์ค๊ณ๋ ํ
์คํธ ์๋ํ์ ์ฌํ๊ฒ ์์กดํ๋ค.