๐Ÿ’ซ ETC/์ด๊ฒƒ์ €๊ฒƒ

๐Ÿ”” [GitHub Actions] GitHub Discussions์™€ Slack ์—ฐ๋™ํ•˜๊ธฐ

ming412 2023. 9. 28. 11:49

ํ˜‘์—…์„ ํ•˜๋ฉด์„œ ๋ฌธ์„œํ™”๋ฅผ ์œ„ํ•ด GitHub Discussions๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

๊ธฐ์กด์—๋Š” notion์„ ์ฃผ๋กœ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ,

GitHub์— ์ด๋ฏธ organization์ด ์กด์žฌํ•˜๋Š” ์ƒํ™ฉ์—์„œ ํ”Œ๋žซํผ์„ ํ•˜๋‚˜๋” ๋Š˜๋ฆฌ๊ธฐ ๋ณด๋‹ค๋Š” ํ†ต์ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๋Š” ํŒ๋‹จ์ด์—ˆ๋‹ค.

 

Slack์— ์žˆ๋Š” GitHub ์•ฑ์—์„œ ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด ํ•œ ์ค„์ด๋ฉด `issues`, `pulls`, `commit`๋“ฑ์˜ ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์ง€๋งŒ,

Discussions์— ์ƒˆ ๊ธ€์ด ์˜ฌ๋ผ์™”์„ ๋•Œ ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋Š” ์—†๋‹ค. ๐Ÿ˜ญ

 

์•Œ์•„๋ณด๋‹ˆ GitHub Actions์™€ Web Hook์„ ์‚ฌ์šฉํ•˜์—ฌ Slack๊ณผ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜์—ฌ ์ง์ ‘ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค!

 

1. GitHub Actions ์›Œํฌํ”Œ๋กœ์šฐ ์„ค์ •

1) GitHub ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ `.github/workflows` ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„์— `discussioins-notification.yml`๊ณผ ๊ฐ™์€ ์ด๋ฆ„์˜ YAML ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.

2) ์•„๋ž˜์™€ ๊ฐ™์ด GitHub Actions ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

name: GitHub Discussions Notification

on:
  discussion:
    types: [created]
  discussion_comment:
    types: [created]

jobs:
  notify_slack:
    runs-on: ubuntu-latest
    steps:
      - name: Check out code
        uses: actions/checkout@v2

      - name: Send notification to Slack
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
        run: |
          MESSAGE="A new discussion has been created: ${{ github.event.discussion.html_url }}"
          curl -X POST -H 'Content-type: application/json' --data "{'text':'$MESSAGE'}" $SLACK_WEBHOOK_URL

์œ„์—์„œ๋Š” ์ƒˆ๋กœ์šด ํ† ๋ก ์ด ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ์™€ ๋Œ“๊ธ€์ด ๋‹ฌ๋ ธ์„ ๋•Œ ์•Œ๋ฆผ์ด ์˜ค๋„๋ก ํ–ˆ๋‹ค.

๋‹ค์–‘ํ•œ event trigger์™€ types๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ์•„๋ž˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

 

https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#discussion

 

Events that trigger workflows - GitHub Docs

You can configure your workflows to run when specific activity on GitHub happens, at a scheduled time, or when an event outside of GitHub occurs.

docs.github.com

 

2. Slack Incomming Webhooks ์„ค์ •

1) Slack ์•ฑ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ `incoming`์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์•„๋ž˜ "Incoming WebHooks`๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

2) Incomming Webhook์„ ์ƒ์„ฑํ•œ ํ›„, Webhook URL์„ ๋ณต์‚ฌํ•ด๋‘”๋‹ค.

(์ด URL์€ GitHub Actions์—์„œ Slack์— ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.)

 

 

3. GitHub Secrets ์„ค์ •

1) GitHub ์ €์žฅ์†Œ์˜ Settings > Secrets and variables > Actions ์„น์…˜์œผ๋กœ ์ด๋™ํ•˜์—ฌ `New Repository Secret`์„ ํด๋ฆญํ•œ๋‹ค.

2) Name์€ `SLACK_WEBHOOK_URL`๋กœ ์„ค์ •ํ•˜๊ณ , Secret์—๋Š” ์ด์ „์— ๋ณต์‚ฌํ•ด๋‘” Slck Incoming Webhook URL์„ ๋ถ™์—ฌ๋„ฃ๋Š”๋‹ค.

(์ด Secret์€ GitHub Actions ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.)

 

 

์™„๋ฃŒ

์ด์ œ ์ƒˆ๋กœ์šด GitHub Discussions ๊ธ€์ด ๋“ฑ๋ก๋˜๊ฑฐ๋‚˜ ๋Œ“๊ธ€์ด ๋‹ฌ๋ ธ์„ ๋•Œ Slack์œผ๋กœ ์•Œ๋ฆผ์„ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค! ๐ŸŽ‰

 

์ฐธ๊ณ  ์ž๋ฃŒ

[Git] Github Action Workflow ์ž‘์„ฑ๋ฒ•