suvera-dev ๐Ÿฅฆ

CI/CD) Github Actions - Slack ์—ฐ๋™ ๋ณธ๋ฌธ

Infra/CI CD

CI/CD) Github Actions - Slack ์—ฐ๋™

suvera 2023. 7. 13. 10:30

๋ฐฐํฌ ์ž๋™ํ™” ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋ฉด์„œ Github Actions์„ ์‚ฌ์šฉํ•˜์—ฌ

Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ECR์— Pushํ•˜๋Š” ๊ณผ์ •์„ ์ง„ํ–‰ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฒˆ์—๋Š” ๊ทธ ๊ณผ์ •์—์„œ ๋นŒ๋“œ์— ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ์„ ๊ฒฝ์šฐ์— ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด์„œ

์—…๋ฌด ํ˜‘์—… ํˆด๋กœ ์‚ฌ์šฉ๋˜๋Š” Slack๊ณผ ์—ฐ๋™ํ•˜๋Š” ๊ณผ์ •์„ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


1. Slack์— ์ƒˆ๋กœ์šด ์•ฑ ์ƒ์„ฑ

https://api.slack.com/apps

 

Slack API: Applications | Slack

Your Apps Don't see an app you're looking for? Sign in to another workspace.

api.slack.com

1) Create New App -> From Scratch ์„ ํƒ

2) App Name์—๋Š” ์‚ฌ์šฉํ•  ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ , ๊ทธ ์•„๋ž˜ Pick a workspace to develop your app in์—๋Š”

์•Œ๋ฆผ์„ ๋ฐ›์„ Slack WorkSpace๋ฅผ ์„ ํƒ

 

2. Incoming Webhooks๋ฅผ ํ™œ์„ฑํ™” !

์ฐธ๊ณ  ) Webhook์ด๋ž€?

ํ•˜๋‚˜์˜ ์•ฑ/์›น์ด ๋‹ค๋ฅธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์•ฑ๊ด€๋ จ ์ด๋ฒคํŠธ ์ •๋ณด๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. 

Web Callback ๋˜๋Š” HTTP PUSH API๋กœ๋„ ๋ถˆ๋ฆฐ๋‹ค.

 

โ€ป ์‹ค์‹œ๊ฐ„์ด๋ž€?

- ํ•ด๋‹น ์•ฑ์—์„œ ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ์ผ์–ด๋‚˜๋Š” ์ฆ‰์‹œ, ๋ฏธ๋ฆฌ ์ง€์ •ํ•ด๋†“์€ URL์„ ํ†ตํ•ด ๋‹ค๋ฅธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ด๋ฒคํŠธ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋ณด๋‚ธ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

 

3. Webhook URL ์ƒ์„ฑ

- Add New Webhook to Workspace๋ฅผ ์„ ํƒํ•ด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์„ ์ฑ„๋„ ์„ ํƒ 

- ์•„๋ž˜์™€ ๊ฐ™์ด URL์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

5) Webhook URL์„ ๋ณต์‚ฌํ•˜์—ฌ Github Repository ์„ธํŒ…์— Secrets๋กœ ๋“ฑ๋ก

- ์œ„์น˜ : Setting - Security - Secrets ans variables - Actions - New repository secret

6) Github Actions workflows ํŒŒ์ผ ์ˆ˜์ •

https://github.com/marketplace/actions/action-slack

 

action-slack - GitHub Marketplace

You can notify slack of GitHub Actions

github.com

- ์ด์ „์— ์ž‘์„ฑํ–ˆ๋˜ yml ํŒŒ์ผ์—๋‹ค๊ฐ€ Slack ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๋ถ€๋ถ„์„ ์ถ”๊ฐ€ํ•ด๋ณด์ž.

steps:
  - uses: 8398a7/action-slack@v3
    with:
      status: ${{ job.status }}
      fields: repo,message,commit,author,action,eventName,ref,workflow,job,took,pullRequest # selectable (default: repo,message)
    env:
      SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} # required
    if: always() # Pick up events even if the job fails or is canceled.

- ์œ„์˜ ๊ฐ€์ด๋“œ๊ฐ€ general ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์ด๊ณ , fields ์— ์„ ์–ธ๋˜๋Š” ๊ฐ’๋“ค์€ ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฅผ Slack ๋ฉ”์‹œ์ง€๋กœ ๋ณด๋ƒˆ์„ ๋•Œ ๋‚˜์˜ค๋Š” ํ•ญ๋ชฉ๋“ค์ด๋‹ค. 

- status๋ฅผ custom์œผ๋กœ ํ•˜๊ณ , custom_payload: ์„ ์‚ฌ์šฉํ•ด์„œ ์›ํ•˜๋Š”๋Œ€๋กœ ์ปค์Šคํ…€ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

 

์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ์ปค์Šคํ…€ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋‚˜์™€์žˆ๋”ฐ.

 

[Github Actions] GitHub Actions์„ ์ด์šฉํ•œ Slack ์•Œ๋ฆผ ์„ค์ •ํ•˜๊ธฐ

GitHub Actions๋Š” CI/CD๋ฅผ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ด๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋‹ค์–‘ํ•œ ์ž‘์—…๋“ค์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋นŒ๋“œ๋‚˜ ํ…Œ์ŠคํŠธ์˜ ์„ฑ๊ณต ๋ฐ ์‹คํŒจ๋ฅผ Slack์œผ๋กœ ์•Œ๋ฆผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๊ธ€

systorage.tistory.com

๋‚˜๋Š” ์šฐ์„  ํ•œ๋ฒˆ ๋ชจ๋“  fields๋ฅผ ๋‹ค ๋„ฃ์–ด์„œ ํ…Œ์ŠคํŠธ ํ•ด๋ณด์•˜๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ถ”๊ฐ€์ ์œผ๋กœ failure ๋‚˜ cancelled๊ฐ€ ๋˜์—ˆ์„๋•Œ mentionํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ๋„ฃ์–ด๋ดค๋‹ค.

 

๊ฒฐ๊ณผ ) 

- ๋กœ์ปฌ์—์„œ ์ฝ”๋“œ ์ˆ˜์ • ํ›„ Push

- Slack ๋ฉ”์„ธ์ง€๋กœ ์„ฑ๊ณตํ•œ ๋‚ด์—ญ์ด ์˜ค๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค ! 

 

 

 

 

Comments