yiskw note

機械学習やプログラミングについて気まぐれで書きます

GitHubでのメンションをslackに通知させる


概要

GitHub内でのメンションに気づかないことが多々あり, slackへの通知してくれたら便利だなーと思い調べていたら, 次のようなものを見つけました.

github.com

その設定についての備忘録です.

actions-mention-to-slackとは

GitHub Actionsを用いて,IssueでのメンションやPRのレビューリクエストなどで通知を投げてくれる機能です.
開発者の方が,Github上のメンションをSlackメンションに変換するGithub Actionsを作ったで詳しく解説してくださってます.

設定

設定の方法は非常に簡単で以下の流れで簡単にできます.

  1. https://api.slack.com/appsから,Create New Appで新しいアプリを作成.
  2. Incoming Webhooksをクリックして,Activate Incoming Webhooksをオンにする.
    f:id:yiskw713:20210212163555p:plain:w400
  3. Add New Webhook to Workspaceから,Webhook URLを取得する.
    f:id:yiskw713:20210212163613p:plain:w400
  4. 通知を行いたいGitHubのレポジトリのSettings -> secretsにおいて,SLACK_WEBHOOK_URLという名前の変数名で,Webhook URLを登録する.
  5. GitHubのレポジトリに二つのファイルを追加する.
    下記のように通知の設定を.github/workflows/slack-to-mention.ymlに記述
on:
  issues:
    types: [opened, edited]
  issue_comment:
    types: [created, edited]
  pull_request:
    types: [opened, edited, review_requested]
  pull_request_review:
    types: [submitted]
  pull_request_review_comment:
    types: [created, edited]

jobs:
  mention-to-slack:
    runs-on: ubuntu-latest
    steps:
      - name: Run
        uses: abeyuya/actions-mention-to-slack@v2
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
          icon-url: https://img.icons8.com/color/256/000000/github-2.png
          bot-name: "Send Mention from abeyuya/actions-mention-to-slack"
          run-id: ${{ github.run_id }}

slackのユーザーとGitHubのユーザーの紐付けの設定を記述する.github/mention-to-slack.ymlを追加.

# For Github User
# github_username: "slack_member_id"

github_username_A: "slack_member_id_A"
github_username_B: "slack_member_id_B"
github_username_C: "slack_member_id_C"
abeyuya: "XXXXXXXXX"

# For Github Team
# github_teamname: "slack_member_id"

github_teamname_A: "slack_member_id_D"

slackのユーザーのIDは,slackのプロフィールから取得できます. Profile -> more -> Copy member ID
f:id:yiskw713:20210212164928p:plain:w300
6. 上記の内容をpushして完了です.

結果

f:id:yiskw713:20210212165746p:plain:w500

こんな感じでチャンネルに通知してくれます.