エンジニアのはしがき

プログラミングの日々の知見を書き連ねているブログです

SlackでGitHubの各種通知を受け取ろう!

f:id:tansantktk:20211023155428j:plain

SlackでGitHub通知を受け取るくらいならすぐに出来るだろうと思っていたら、微妙に設定が回りくどかったので備忘録として残します。

GitHub公式ドキュメント

github.com

SlackアプリからGitHubを追加する

SlackのサイドバーのAppを選択し、GitHubを検索して追加します。Appがサイドバーに表示されていない場合は環境設定から表示させましょう。

f:id:tansantktk:20210919143315p:plain

app directoryページに遷移するので、「Slackに追加」を押します。

f:id:tansantktk:20210919143534p:plain

アクセス権限の確認画面が表示されるので「許可する」を押します。

f:id:tansantktk:20210919143556p:plain

これでSlackのサイドバーのAppにGitHubが追加されました。まだこの段階ではGitHub側からSlackを許可していない為、通知は動作しません。

f:id:tansantktk:20210919143806p:plain

GitHub側からSlackを許可する

Slack上のApp - GitHubに対して以下のメッセージを送信します。/githubGitHubアプリに対してアクションを要求する際のprefixとなります。

/github signin

GitHubアプリからGitHubアカウントとの接続を求められる返信が来ますので、「Connect GitHub account」を押します。

f:id:tansantktk:20210919145037p:plain

Webページが開き、GitHubとSlackとの連携をするかどうか確認されますので、「Connect GitHub account」を押します。

GitHub側からSlackを許可する画面が表示されますので、「Authorize Slack」を押します。

f:id:tansantktk:20210919144350p:plain

一時的な認証コードが発行されますのでコピペしておきます。

f:id:tansantktk:20210919144925p:plain

コピペした認証コードを入力するため「Enter code」を押し、表示されたダイアログにコードを入力して「送信」を押します。

f:id:tansantktk:20210919145037p:plain

GitHubにSlackアプリをインストールするよう求められますので「Install GitHub App」を押します。

f:id:tansantktk:20210919145205p:plain

GitHubにSlackアプリをインストールする際の設定画面が表示されます。必要に応じて設定値は変えて「Install」を押します。

f:id:tansantktk:20210919145249p:plain

これで通知を受け取る準備ができました。ただし、Slack側で通知を受け取るGitHubリポジトリを指定していないのでまだ通知はされません。

リポジトリをsubscribeして通知を受け取ろう

自分だけ通知を受け取りたい時

通知を受け取る為にはリポジトリ毎に設定が必要です。App - GitHubに対して下記メッセージを送信すると指定したリポジトリの通知が出力されるようになります。owner/repoの部分は通知を受け取りたいリポジトリの文字列に置き換えてください。

# reviews,comments,branches,commits:*の部分は、
# デフォルトの通知内容に対してさらにカスタマイズとして追加したい通知内容を追記しています。
/github subscribe owner/repo reviews,comments,branches,commits:*

デフォルトの通知内容等については下記を参照ください。 github.com

これでGitHub側でアクションがあれば、App - GitHubに通知が溜まっていくようになります。

f:id:tansantktk:20210919145257p:plain

特定チャンネルで通知を受け取りたい時

App - GitHubへの通知は設定した自ユーザーにしか適用されない為、チーム開発だとsubscribeの設定が面倒だったりと不便に感じることがあると思います。そういう場合は通知用チャンネルを別に作成し、そのチャンネルに対してGitHubアプリの通知を流し込むことが可能です。

というわけでまずはGitHub通知用のチャンネルを作ります。今回は「github-notice」という名前のチャンネルで作成しました。

チャンネルを作成したら、チャンネルの設定画面のインテグレーションから「アプリを追加する」を押します。

f:id:tansantktk:20210919151617p:plain

アプリの中から「GitHub」を探して「追加」を押します。

f:id:tansantktk:20210919151801p:plain

これでGitHubの通知はチャンネルに対して通知されるようになりました。あとは自分だけ通知を受け取る場合と同様です。通知する対象のリポジトリを指定しましょう。

/github subscribe owner/repo reviews,comments,branches,commits:*

f:id:tansantktk:20210919152110p:plain

正しく設定できていれば、このような形で通知が流れてくるはずです。subscribeの設定はチャンネルに対して適用されますので、チャンネルに参加するメンバー全員が同一の通知を受け取ることができます。

こちらの方法なら絵文字や返信を付けて既読を表したり、補足コメントを共有できるので便利ですね。

リポジトリをunsubscribeして通知を無効化する

通知をやめたい場合は、対象のリポジトリに対してunsubscribeします。

/github unsubscribe owner/repo