Slack を活用して GitHub でのタスク対応漏れを防ぐ GitHub Actions
GitHub 公式の Slack アプリだと、情報が多かったり少なかったり、他のユーザーの通知で自分に関係するタスクが流れてしまいがちです。
そういった点で複数人開発には、公式アプリは向いていないなと思っていました。
他の Slack アプリも探してみたものの、あまり良いものが見つかりませんでした。
そこで、個人的に必要だと思った通知内容だけ切り出して、それらを通知するための GitHub Action を開発してみました。
以下のリンクが、今回開発したソースコードのレポジトリになります。
通知内容
以下が全ての通知タイプで、これ以外の種類は届かないようになっています。
全てのユーザー
- PR もしくは、Issue でメンションを受け取った時
レビュアー
- レビューリクエストを受け取った時
デベロッパー
- レビューをリクエストした時
- レビュー結果が返ってきた時
- Approved
- Requested changes
- Commented
- Approved
- 作成した PR がマージされた時
設定方法
まず、導入したい Workspace に Slack App を作成し、それの OAuth Access Token を action に渡してあげることで、実行できるようにします。
Slack App を作成する
以下の手順で作成します。
- Slack の Your Apps ページ に移動する
-
Create New App
をクリックし、From scratch
を選択する
-
GitHub Notification
等をApp Name
に入力し、Workspace を選択後にCreate App
をクリックする
-
Add features and functionality
から、Permissions
をクリックする
-
Scopes
のBot Token Scopes
から、chat:write
を選択する
-
Basic Information
へ戻り、Install to Workspace
をクリックする
-
Allow
をクリックする
-
OAuth & Permissions
ページで、Bot User OAuth Token
をコピーする
GitHub レポジトリに action ファイルと 設定ファイルを用意する
以下の 2 点を用意してください。
action ファイルはそのままコピーで問題ありません。
userlist ファイルは、環境に合わせて編集してください。
-
.github/workflows/notify-slack.yml
name: GitHub Notification on: pull_request: types: [review_requested, closed] pull_request_review: types: [submitted] issue_comment: pull_request_review_comment: jobs: notify: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: ken-matsui/notify-slack@v1.0.0 with: slack_oauth_access_token: ${{ secrets.SLACK_OAUTH_ACCESS_TOKEN }}
-
.github/userlist.toml
[[users]] github = "ken-matsui" slack = "UXXXXXXXXXX" [[users]] github = "ken-matsui-2" slack = "UXXXXXXXXXX"
github
は、GitHub の User ID を入力し、slack
は、Slack の User ID を入力します。
それを 1 つのユーザーとして解釈します。
Slack の User ID の取得方法は以下のリンクが参考になります。
後は、正しく設定できていれば、GitHub 上での作業に対して、それぞれ最初に示した画像のような通知が届くようになっているかと思います。
最後に
どうしても自分のタスクと関係の無い通知が同じチャンネルに来ていると、タスクを見逃しやすくなってしまいます。
そこをこちらの action では、DM として切り分け、通知内容も絞っているため、タスクが流れてしまうことを防げます。
完了したタスクには✅絵文字を付けるなど、お好みの運用をしていただければと思います。
基本的には、会社の Slack Workspace に導入し、それぞれの会社レポジトリに action ファイルを置いていくといった運用になるかなと思います。
もちろん個人として使っていただくことも可能なので、活用していただけると幸いです。
Discussion
Workflow fileに
とあるのですが,
actions/checkout@v2
は必要なstepなのでしょうか?そうですね、必要になります。
使用する際は、
.github/userlist.toml
ファイルをレポジトリに置いていただく必要があるのですが、そのファイルは、checkoutするまで参照することができないためです。その他のworkaroundとしては、どこかから
userlist.toml
を.github
ディレクトリ内へダウンロードすることですが、動作の保証はしていません。