githubEdit

CI/CD Notifications

trouble shooting

  • 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 ํ•˜๋‚˜๋กœ ์šฐ์„  ๊ฐ€์ž๊ณ  ํ•˜์…”์„œ ์ด์— ๋งž๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ง๊ด€์ ์œผ๋กœ ๊ตฌํ˜„


์ถ”๊ฐ€ ๊ฐœ์„  ์‚ฌํ•ญ

์„ฑ๊ณตํ–ˆ์„ ๋•Œ๋Š” ํ”„๋กœ์ ํŠธ url, ์‹คํŒจํ–ˆ์„ ๋•Œ๋Š” ์‹คํŒจํ•œ Job url์„ ๋ณด์—ฌ์ฃผ๋„๋ก ๊ฐœ์„ 

  • 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์„ ๋งŒ๋“ค์–ด์„œ ์ฒจ๋ถ€

retry ์„ค์ •

  • readinessProbe ๊ด€๋ จ ๋ฌธ์ œ๋กœ review stage๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์„œ retry ์„ค์ •์ด ํ•„์š”ํ•ด๋ณด์ž„

  • retry: max: 2 when: - always # ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์‹คํŒจ์— ๋Œ€ํ•ด ์žฌ์‹œ๋„ ์ถ”๊ฐ€

    • ์ด๊ฑธ ํ•˜๋ฉด ํŒŒ๋“œ์—์„œ retryํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ gitlab์—์„œ retry ํ•˜๋Š” ์„ค์ • ์ด์—ˆ์Œ

  • helm values ์„ค์ •์„ ํ•ด๋ดค๋Š”๋ฐ ๋จนํžˆ์ง€ ์•Š๋Š”๋‹ค

  • auto deploy values.yaml ์ฝ”๋“œ๋ฅผ ๋ดค๋Š”๋ฐ ๊ด€๋ จ๋œ ๊ฐ’์ด ์—†์–ด์„œ ์ ์šฉ์ด ์•ˆ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค


build stage์—๋„ after script๋กœ ์‹คํŒจ์‹œ์—๋งŒ ์•Œ๋ฆผ์„ ๊ฐ€๋„๋ก ์ถ”๊ฐ€

  1. kaniko image์—์„œ curl์ด ์—†์–ด์„œ slack ์•Œ๋ฆผ์„ ๋ณด๋‚ผ ์‹œ ์—๋Ÿฌ ๋ฐœ์ƒ

    1. nexus์— custom image๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉ ํ–ˆ์ง€๋งŒ ๋กœ๊ทธ์ธ ๊ด€๋ จ ์ด์Šˆ ๋•Œ๋ฌธ์— ํฌ๊ธฐ

    2. docker hub public repo์— push ํ•ด์„œ ์‚ฌ์šฉ ํ–ˆ์ง€๋งŒ ์‹คํŒจํ•ด์„œ ํฌ๊ธฐ

    3. curl base imgae๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก job์„ ๋ถ„๋ฆฌํ•ด์„œ ์‚ฌ์šฉ ์‹œ๋„

      1. on_failure: true

        1. ์•ž stage ( build ) ๊ฐ€ ์‹คํŒจํ–ˆ์„ ๋•Œ๋งŒ ๋™์ž‘ํ•˜๋„๋ก ์„ค์ •

        2. ์„ฑ๊ณต ์‹œ skip ๋˜๋Š” ๊ฒƒ ํ™•์ธ


common before script๋กœ loki url ํ”„๋กœ์ ํŠธ ๋ฐฐํฌ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ „๋‹ฌํ•ด์„œ ๋กœ๊ทธ๋ฅผ ๋ฐ”๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๊ฐœ์„ 

์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ

  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ฒดํฌ: SLACK_WEBHOOK_URL์ด ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  Slack ์•Œ๋ฆผ์„ ๊ฑด๋„ˆ๋œ€

  • ์‹คํŒจ ์ฒ˜๋ฆฌ: curl ๋ช…๋ น์–ด ์‹คํ–‰ ํ›„ ๋ฐ˜ํ™˜ ๊ฐ’์ด 0์ด ์•„๋‹ ๊ฒฝ์šฐ (์‹คํŒจํ•œ ๊ฒฝ์šฐ), ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ข…๋ฃŒ.(exit 1). ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•ด๋‹น ์ž‘์—…์ด ์‹คํŒจ๋กœ ์ฒ˜๋ฆฌ.

  • allow_failure ์„ค์ •: allow_failure๋ฅผ default์ธ false๋กœ ์„ค์ •ํ•˜์—ฌ, ์Šคํฌ๋ฆฝํŠธ์˜ ์‹คํŒจ๊ฐ€ ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ์˜ ์‹คํŒจ๋กœ ์ด์–ด์ง€๊ฒŒ ์ˆ˜์ •

์ด ๋ฐฉ์‹์„ ํ†ตํ•ด ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ๊ณ ๋Š” ๋ฌด์‹œํ•˜๊ณ , ์‹ค์ œ ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ํŒŒ์ดํ”„๋ผ์ธ์ด ์‹คํŒจํ•˜๋„๋ก ์„ค์ •. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์Šฌ๋ž™ ์›นํ›… URL์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ฒฝ๊ณ ๋งŒ ํ•˜๊ณ , ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ์‹คํŒจ์—์„œ๋Š” ํŒŒ์ดํ”„๋ผ์ธ์ด ์‹คํŒจ ์ƒํƒœ๋กœ ๋งˆ๋ฌด๋ฆฌ๋˜์–ด ์ ์ ˆํ•œ ์กฐ์น˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ๋‹ค


staging deploy๋ฅผ ๋Œ๋ ค๋ณด๋ฉด์„œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง€ ํ™•์ธ

  • ๋ชฉํ‘œ๋Š” feature ๋ธŒ๋žœ์น˜์—์„œ development๋กœ merge๋œ ๊ฒฝ์šฐ build stage๋ฅผ ์ƒ๋žตํ•˜๊ณ  ๋ฐ”๋กœ deploy๊ฐ€ ์ง„ํ–‰

  • ํ˜„์žฌ๋Š” production ( main ) ๋ธŒ๋žœ์น˜๋งŒ production stage๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ชจ๋‘ review stage ์ž„

  • staging๋„ review๋ž‘ ๋‹ค๋ฅธ ์ ์ด ๋А๊ปด์ง€์ง€ ์•Š๋Š”๋‹ค


Last updated