์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- binarySearch
- URLSession
- ์ฐ์ํ์ค๋ถ๋ถ์์ด์ํฉ
- APPJAM
- ํ๋ก๊ทธ๋๋จธ์ค
- GCD
- IOS
- concurrency
- SwiftUI
- algoritm
- SQL
- 0์ด๋์ด์๋๊ธธ
- algorithm
- discardableResult
- duno
- DynamicProgramming
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ๋์ ๊ณํ๋ฒ
- SOPT
- HAVIT
- SwiftUI Tutorials
- ์ด์งํ์
- Swift
- SwiftUI ํํ ๋ฆฌ์ผ
- ๊ณ ๋์ kit
- ๊ธฐ์ด๋ฌธ๋ฒ
- dfs
- Til
- BFS
- GroupBy
- Today
- Total
suvera-dev ๐ฅฆ
CI/CD) Github Actions - Slack ์ฐ๋ ๋ณธ๋ฌธ
๋ฐฐํฌ ์๋ํ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ฉด์ Github Actions์ ์ฌ์ฉํ์ฌ
Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ECR์ Pushํ๋ ๊ณผ์ ์ ์งํํ์์ต๋๋ค.
์ด๋ฒ์๋ ๊ทธ ๊ณผ์ ์์ ๋น๋์ ์คํจํ๊ฑฐ๋ ์ค๋ฅ๊ฐ ๋ฌ์ ๊ฒฝ์ฐ์ ํธ๋ฆฌํ๊ฒ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํด์
์ ๋ฌด ํ์ ํด๋ก ์ฌ์ฉ๋๋ Slack๊ณผ ์ฐ๋ํ๋ ๊ณผ์ ์ ์งํํด๋ณด๊ฒ ์ต๋๋ค.
1. Slack์ ์๋ก์ด ์ฑ ์์ฑ
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
- ์ด์ ์ ์์ฑํ๋ 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: ์ ์ฌ์ฉํด์ ์ํ๋๋๋ก ์ปค์คํ ํ ์๋ ์๋ค.
์๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ปค์คํ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ๋์์๋ฐ.
๋๋ ์ฐ์ ํ๋ฒ ๋ชจ๋ fields๋ฅผ ๋ค ๋ฃ์ด์ ํ ์คํธ ํด๋ณด์๋ค.
๊ทธ๋ฆฌ๊ณ ์ถ๊ฐ์ ์ผ๋ก failure ๋ cancelled๊ฐ ๋์์๋ mentionํ๋ ๊ธฐ๋ฅ๋ ๋ฃ์ด๋ดค๋ค.
๊ฒฐ๊ณผ )
- ๋ก์ปฌ์์ ์ฝ๋ ์์ ํ Push
- Slack ๋ฉ์ธ์ง๋ก ์ฑ๊ณตํ ๋ด์ญ์ด ์ค๋๊ฑธ ํ์ธํ ์ ์๋ค !