🔔
PRのレビューリクエストをSlackにメンション付きで飛ばすAction
はじめに
最近Slackを使うようになったのですが、公式のGitHubアプリだとPRのレビューリクエストでメンションが飛ばず、気付きにくいので、GitHub Actionsを使って飛ばせるようにしてみました。
作ったものはこちらです。
ちなみに既に同じことを考えている方が、Marketplaceで検索してみると、それなりにいらっしゃいます。
特にこちらは、今回私が作ったものと近いです。
作ったもの
こんな感じでPRのレビューリクエストをメンション付きで通知してくれます。
設定方法
事前に、自分のワークスペースでSlack Appを作成し、Incoming Webhooksを有効化し、Webhook URLを生成しておく必要があります。
生成されたWebhook URLは、GitHubリポジトリのActions Secretsに設定しておきます。
ワークフローファイルはこんな感じで設定します。
on:
pull_request:
# review_requestedだけサポートしています。
types: [review_requested]
# 複数のレビュワーを設定したとき、複数回review_requestedイベントが発生するので、
# 同時に実行される場合があります。それによる複数回の通知を防止します。
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
pr-message-to-slack:
runs-on: ubuntu-latest
steps:
# 後述のslack-id.jsonを参照するために必要です。
- uses: actions/checkout@v2
- uses: hirokisakabe/pr-message-to-slack@v1.0.0
env:
# Actions Secretsに設定してあるWebhook URL
PR_MESSAGE_SLACK_WEBHOOK_URL: ${{ secrets.PR_MESSAGE_SLACK_WEBHOOK_URL }}
ワークフローファイル以外に、.github/slack-id.json
を設定する必要があります。これで、GitHubのユーザ名とSlackのメンバIDをマッピングします。
{
"UserA's GitHub username": "UserA's Slack member ID",
"UserB's GitHub username": "UserB's Slack member ID"
}
SlackのメンバIDは、ここで取得できるやつです。
感想
はじめてGitHub Actionsを作ったので、イベントからのデータの取り出し方などを学ぶことができました。
また、@vercel/nccをはじめて知りました。これは便利。
Discussion