GitLab CI ร Slack Webhook | 1. Freeze-Free MR Pipeline ์ค๊ณ
๐ ์ด ๊ธ์ GitLab CI ร Slack Webhook ์ค 1ํธ์ ๋๋ค.
2ํธ: Freeze-Window ์ฐจ๋จยทMR ์๋ฆผยท์ธ๋ถ Include ์๋ํ
3ํธ: ์ฌ์ฉ์๋ณ ํ๋กํ ์ด๋ชจ์ง ๋ง์ถค ์ ์ฉ
4ํธ: ๊ฐ์ด๋- MR ์๋ฆผยทDraft ํ ๊ธยท์ถฉ๋ ๊ฐ์ง
1. ๋ฌธ์ ์ํฉ ๋๋ ๋๊ธฐ (Motivation)
- ํ๋ก์ ํธ ํ๋ฆฌ์ง ๊ธฐ๊ฐ์ MR์ด ์ค์๋ก ๋จธ์ง๋์ด ์์ค๊ฐ ๋ฐ์๋๋ ์ผ์ด ๋ฐ์
- ๋ฐฐํฌ ์์ ์ฑ ํ๋ณด์ ํด๋จผ์๋ฌ ๋ฐฉ์ง๋ฅผ ์ํด ์๋ํ๋ ์ฐจ๋จ ์ฅ์น ํ์์ฑ ์ธ์
- CI/CD, .gitlab-ci.yml, bash ๋ฑ ์ต์ํ์ง ์์ ํ๊ฒฝ์์์ ์๋ํ ๋์ ์ ๋ํ ๋์
2. ๋ชฉํ ๋ฐ ์๊ตฌ์ฌํญ (Goal & Requirements)
- ํ๋ฆฌ์ง ๊ธฐ๊ฐ์ MR์ด ๋จธ์ง๋๋ ๊ฒ์ ์ฌ์ ์ ์ฐจ๋จ (์๋ํ)
- Slack Webhook์ ํตํ ์ค์๊ฐ ์๋ฆผ ์ฐ๋
- ์ฐจ๋จ ์์ (MR ์ /ํ) ๋ช ํํ ๋ฐ ์ ์ฐํ ์กฐ๊ฑด ๋ถ๊ธฐ
- GitLab CI/CD ๋ณ์, bash ์คํฌ๋ฆฝํธ, GitLab Predefined Variables ์ ๊ทน ํ์ฉ
3. ๊ตฌํ ๊ณผ์ (Implementation)
3.1 ์ฃผ์ ์ฝ๋/๋ก์ง ์ค๋ช
- Slack Webhook ์ ์ฒญ ๋ฐ ํ ์คํธ, ์ค์ ๋ก Slack ์ฑ๋์ ๋ฉ์์ง๊ฐ ์ค๋์ง curl๋ก ์ฌ์ ๊ฒ์ฆ
- .gitlab-ci.yml ์์ฑ ๋ฐ GitLab Settings > CI/CD > Variables์์ SLACK_URL, F_S_DATE, F_E_DATE ๋ฑ ๋ณ์ ์ธํ
- MR ์ด๋ฒคํธ ๊ฐ์ง ๋ฐ ์กฐ๊ฑด ๋ถ๊ธฐ, Slack ์๋ฆผ ์ ์ก, ํ์ดํ๋ผ์ธ ์ฐจ๋จ ๋ฑ ๊ตฌํ
3.2 ์ํ์ฐฉ์ค/ํธ๋ฌ๋ธ์ํ
- GitLab Workflow์ CI/CD ๊ฐ๋ ํผ๋, .gitlab-ci.yml ๋ฌธ๋ฒ ๋ฏธ์์ผ๋ก ์ธํ ๋ฐ๋ณต์ ์ธ ์๋ฌ
- GitLab Predefined Variables ์ฌ์ฉ๋ฒ, MR ์ด๋ฒคํธ ๊ฐ์ง ์กฐ๊ฑด(rules, only ๋ฑ) ์ํ์ฐฉ์ค
- bash ๋ฌธ๋ฒ, Slack Webhook ๋ฉ์์ง ํน์๋ฌธ์ ์ฒ๋ฆฌ ๋ฑ์์ ๋ฐ๋ณต์ ์ธ ์๋ฌ ๊ฒฝํ
- ํนํ, curl ๋ช ๋ น์ด์์ ๋ณ์์ ํน์๋ฌธ์, ์ด๋ชจ์ง, ์ค๋ฐ๊ฟ ์ฒ๋ฆฌ ๋ฑ์ผ๋ก ์ธํด ์์์น ๋ชปํ ์๋ฌ๊ฐ ์์ฃผ ๋ฐ์
- MR ์์ฑ์ด ํธ๋ฆฌ๊ฑฐ๊ฐ ๋์ด์ผ ํ๋ฏ๋ก, ๋ฐฐ์นํ์์ด ์๋ ์์์ฑ ํ์ดํ๋ผ์ธ ์ค๊ณ์ ์ด๋ ค์
ํด๋น ์์ ๋ ๋ค๋ฅธ ์์ ๋ค์ฒ๋ผ ๋ฐฐ์นํ์์ผ๋ก ์ผ์ ํ ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ํ ์ ์๋ ๊ฒ์ด์์ผ๋ฉด ์์ ์ด ํธํ์ ๊ฒ ๊ฐ์ผ๋, ์ด ์์ ์ ์ฌ๋์ด MR์ ์์ฑ ํ์์, ์ํ๋์ด์ผํ๊ธฐ์ MR์ด ์์ฑ๋ ์์ ์์ ์ํ๋์ด์ผ ํ์ต๋๋ค. ๊ทธ๋์ ์์์ฑ์ ๊ฐ๊ณ ์์ด์ผํ๋ค๋ ์ ์ด ์๋ฌ์ ์ต๋๋ค. ๊ทธ ์ธ์๋ bash ์์ฑ ๋ ๋ง๋ Nested Mapping Error, collapse multi line command ๋ฑ๋ฑ ๋ง์ ํธ๋ฌ๋ธ์ด ์์์ต๋๋ค.
GitLab CI/CD Workflow
4. ๊ฒฐ๊ณผ & ๋ฐฐ์ด ์ (Result & Learning)
- ํ๋ฆฌ์ง ๊ธฐ๊ฐ ์ค ์ค์๋ก ์ธํ ์์ค ๋ฐ์์ ์ฌ์ ์ ์ฐจ๋จํ๊ณ , Slack์ ํตํ ์ค์๊ฐ ์๋ฆผ์ผ๋ก ๊ฐ๋ฐ ํ๊ฒฝ์ ์์ ์ฑ์ ํฌ๊ฒ ๋์ผ ์ ์์์ต๋๋ค.
- ์ค์ ๋ก MR์ด ์ฐจ๋จ๋๋ ์ํฉ์ ๊ฒฝํํ๋ฉฐ, ํด๋จผ์๋ฌ๋ก ์ธํ ๋ฆฌ์์ค ๋ญ๋น๋ฅผ ์ค์ด๊ณ , ๊ฐ๋ฐ ํจ์จ์ ๊ฐ์ ํ ์ ์์์ต๋๋ค.
- GitLab CI/CD ์๋ํ ํ์ดํ๋ผ์ธ์ ์ง์ ์ค๊ณยท๊ตฌํํ๋ฉด์ bash ์คํฌ๋ฆฝํธ ์์ฑ๊ณผ GitLab ๋ณ์ ํ์ฉ ๋ฅ๋ ฅ์ด ํฌ๊ฒ ํฅ์๋์์ต๋๋ค.
- ์์์ฑ ํ์ดํ๋ผ์ธ ๊ตฌ์กฐ์ ๋ค์ํ ์์ธ ์ํฉ์ ์ฒ๋ฆฌํ๋ ๋ก์ง์ ๊ณ ๋ฏผํ๋ฉฐ, ์ค๋ฌด์์์ ์๋ํ ์ค๊ณ์ ์ด์ ๊ฒฝํ์ ์์ ์ ์์์ต๋๋ค.
5. ๊ธฐ์ ์คํ (Tech Stack)
GitLab GitLab CI Bash Script Slack Webhook
6. ์ฐธ๊ณ ์๋ฃ (References)
- GitLab CI/CD ๊ณต์ ๋ฌธ์
- Slack Webhook ๊ณต์ ๋ฌธ์
- ๊น๋ฉ ์ํฌํ๋ก์ฐ ์ด๋ฏธ์ง ์ถ์ฒ
- ๊นํ๋ธ PR eslint ์์


