CI/CD Notifications
Last updated
Last updated
auto devops basic enable
ํ๋ก์ ํธ์์ custom auto devops ์ฝ๋ ์ ๊ฑฐ
ํ๋ก์ ํธ - ci/cd ๋ฉ๋ด์์ basic auto devops ์ฌ์ฉ enable
gitlab registry ์ฌ์ฉํ๊ธฐ ( gitlab variable ์ค์ )
Docker in Docker ์๋ฌ ํด๊ฒฐ ( CI/CD Settings โ Runners โ Enable instance runners for this project โ Disable group runners )
branch ๋ณ ๋ฐฐํฌ ๋๋ ๋ค์์คํ์ด์ค
main ( eks dev cluster )
$CI_PROJECT_NAME-production
development ( eks dev cluster )
$CI_PROJECT_NAME
๋๋จธ์ง feature ๋ธ๋์น ( play cluster )
$CI_PROJECT_NAME-$CI_COMMIT_REF_SLUG
start, finalize stage๋ก ๊ตฌํํ๋ ค๊ณ ํ๋๋ฐ, finalize stage์์ ์ ์ฒด ํ์ดํ๋ผ์ธ์ ์ฑ๊ณต์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋ predefined variable์ด ์๊ณ $CI_JOB_STATUS ๊ฐ์ด ์์ด์ ํด๋น stage์ common after script์์ ์ ๊ฐ์ผ๋ก ํ๋จํ์ฌ deploy ( review, production ) stage์์ ์ต์ข ์ฑ๊ณต ์ฌ๋ถ์ ๋ํ ๋ฉ์์ง๋ฅผ ์ ๋ฌ
start์์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด curl ๋ฏธ์ค์น ์๋ฌ๊ฐ ๋ฐ์
ubuntu:latest ๋ฅผ ์ฌ์ฉํ๊ณ before_script์์ curl ์ค์น๋ฅผ ํ์ผ๋ ์ด์ฉ๋ ์ด ๊ฐ๋ตํ stage์์ 2๋ถ์ด๋ ๊ฑธ๋ฆผ
curl ๋ง ์ค์น๋ base image ์ฐธ์กฐ
slack webhook url์ด ์๋ ์ํ์ธ ๊ฒฝ์ฐ ๋ฐฐํฌ pipeline์ด ์๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด์ allow_failure : true ์ถ๊ฐ
์ค์ ์ ํ๋ฉด ์๋ฌ๊ฐ ๋๋ ์คํต๋๊ณ ๋๋จธ์ง stage๊ฐ ์งํ๋จ
๋ฉ์์ง ๊ฐ๊ฒฐํ
๋ด๊ฐ ๊ตฌ์ํ integration ์ฑ๋๋ก ๊ฐ๋ ๊ฒ ์๋๋ผ team-prjname-integration ํ๋๋ก ์ฐ์ ๊ฐ์๊ณ ํ์ ์ ์ด์ ๋ง๊ฒ ๋ฉ์์ง๋ฅผ ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์ผ๋ก ๊ตฌํ
deploy๋ฅผ ์คํจ์ํค๊ธฐ ์ํด livenessprobe๋ฅผ /๋ก ์ก์๋จ๋๋ฐ api endpoint๋ฅผ ๋ฐ๊ฟ
Liveness probe failed: HTTP probe failed with statuscode: 404
๋ฉ์์ง failed ํ์ธ ๋ฐ ๋งํฌ ๋๋ฅผ ์ ์คํจํ review stage๋ก ์ด๋ ํ์ธ
์ถํ์ ์ฌ๊ธฐ์ ์ค๋ ๋์์ ๋ฐ๋ธ์ต์ค ํธ์ถ ํ๋ ์์ผ๋ก
์ฑ๊ณตํ์ ๋๋ ํ๋ก์ ํธ url
์คํจํ์ ๋๋ ์คํจํ job link
์คํจํ์ ๋ ์ข ๋ ๋ํ ์ผ ํ๊ฒ ์ด๋ค stage์ธ ์ง ๋ช ์ํ๊ธฐ๋ก ํ๋ค
๋ฉ์์ง ํ์ ์ต์ข ์์
integration channel์ด ํ๋ก์ ํธ๋ณ๋ก ์๋ ๊ฒ ์๋๋ผ ํ๋ก์ ํธ ํ ๋ณ๋ก ์์๊ฑฐ๋ผ์ ํ์์ ๊ฐ๋ฐํ๋ ํ๋ก์ ํธ๋ค์ ๋ํ ๋ค์ด๋ฐ์ด ์์ผ๋ฉด ์ด๋ค ํ๋ก์ ํธ์ ๋ฐฐํฌ pipeline์ด ๋์ํ๋ ์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ ์์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ถ๊ฐํ๋ค
{ํ๋ก์ ํธ repo ์ด๋ฆ} {๊ฐ๋ฐํ๊ฒฝ-prod,dev,feature branch} pipeline is started by {gitlab-user}
์ฑ๊ณต ์ ํ๋ก์ ํธ ๋งํฌ
์คํจ ์ ์คํจํ ํ์ดํ๋ผ์ธ ๋งํฌ
์๋ ๋ช ์๊ฐ ๋์ด์๊ธด ํ์ง๋ง deploy ( review, production ) ๋จ๊ณ ์์ ์ runtime log๋ฅผ ๋ณผ ์ ์๊ฒ ํ๋ก์ ํธ ๋ณ ๋ก๊ทธ๋ฅผ ํ์ธํ ์ ์๋ loki url์ ๋ง๋ค์ด์ ์ฒจ๋ถ
readinessProbe ๊ด๋ จ ๋ฌธ์ ๋ก review stage๊ฐ ๋๋ฌด ๊ธธ์ด์ retry ์ค์ ์ด ํ์ํด๋ณด์
retry: max: 2 when: - always # ๋ชจ๋ ์ข ๋ฅ์ ์คํจ์ ๋ํด ์ฌ์๋ ์ถ๊ฐ
์ด๊ฑธ ํ๋ฉด ํ๋์์ retryํ๋ ๊ฒ ์๋๋ผ gitlab์์ retry ํ๋ ์ค์ ์ด์์
helm values ์ค์ ์ ํด๋ดค๋๋ฐ ๋จนํ์ง ์๋๋ค
auto deploy values.yaml ์ฝ๋๋ฅผ ๋ดค๋๋ฐ ๊ด๋ จ๋ ๊ฐ์ด ์์ด์ ์ ์ฉ์ด ์๋๋ ๊ฒ ๊ฐ๋ค
kaniko image์์ curl์ด ์์ด์ slack ์๋ฆผ์ ๋ณด๋ผ ์ ์๋ฌ ๋ฐ์
nexus์ custom image๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉ ํ์ง๋ง ๋ก๊ทธ์ธ ๊ด๋ จ ์ด์ ๋๋ฌธ์ ํฌ๊ธฐ
docker hub public repo์ push ํด์ ์ฌ์ฉ ํ์ง๋ง ์คํจํด์ ํฌ๊ธฐ
curl base imgae๋ฅผ ์ฌ์ฉํ๋๋ก job์ ๋ถ๋ฆฌํด์ ์ฌ์ฉ ์๋
on_failure: true
์ stage ( build ) ๊ฐ ์คํจํ์ ๋๋ง ๋์ํ๋๋ก ์ค์
์ฑ๊ณต ์ skip ๋๋ ๊ฒ ํ์ธ
ํ๊ฒฝ ๋ณ์ ์ฒดํฌ: SLACK_WEBHOOK_URL
์ด ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ณ Slack ์๋ฆผ์ ๊ฑด๋๋
์คํจ ์ฒ๋ฆฌ: curl
๋ช
๋ น์ด ์คํ ํ ๋ฐํ ๊ฐ์ด 0์ด ์๋ ๊ฒฝ์ฐ (์คํจํ ๊ฒฝ์ฐ), ์๋ฌ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ณ ์คํฌ๋ฆฝํธ๋ฅผ ์ข
๋ฃ.(exit 1
). ์ด๋ ๊ฒ ํ๋ฉด ํด๋น ์์
์ด ์คํจ๋ก ์ฒ๋ฆฌ.
allow_failure
์ค์ : allow_failure
๋ฅผ default์ธ false
๋ก ์ค์ ํ์ฌ, ์คํฌ๋ฆฝํธ์ ์คํจ๊ฐ ์ ์ฒด ํ์ดํ๋ผ์ธ์ ์คํจ๋ก ์ด์ด์ง๊ฒ ์์
์ด ๋ฐฉ์์ ํตํด ์ค์ํ์ง ์์ ๊ฒฝ๊ณ ๋ ๋ฌด์ํ๊ณ , ์ค์ ๋ฌธ์ ๋ฐ์ ์ ํ์ดํ๋ผ์ธ์ด ์คํจํ๋๋ก ์ค์ . ์ด๋ ๊ฒ ํ๋ฉด ์ฌ๋ ์นํ URL์ด ์๋ ๊ฒฝ์ฐ์๋ ๊ฒฝ๊ณ ๋ง ํ๊ณ , ๋ค๋ฅธ ์ค์ํ ์คํจ์์๋ ํ์ดํ๋ผ์ธ์ด ์คํจ ์ํ๋ก ๋ง๋ฌด๋ฆฌ๋์ด ์ ์ ํ ์กฐ์น๋ฅผ ์ทจํ ์ ์๋ค
๋ชฉํ๋ feature ๋ธ๋์น์์ development๋ก merge๋ ๊ฒฝ์ฐ build stage๋ฅผ ์๋ตํ๊ณ ๋ฐ๋ก deploy๊ฐ ์งํ
ํ์ฌ๋ production ( main ) ๋ธ๋์น๋ง production stage๊ณ ๋๋จธ์ง๋ ๋ชจ๋ review stage ์
staging๋ review๋ ๋ค๋ฅธ ์ ์ด ๋๊ปด์ง์ง ์๋๋ค