筆休め
Slack の新しい GitHub 連携で全ブランチのコミット通知を含めて購読する

弊社では GitHub で起こったアクションはそれぞれ紐付いた Slack のチャンネルに通知がくるようにしています。

GitHub と Slack の連携は公式でも日本語で案内されていますが、正直使い方はわかりにくいです。

さらに最近 Slack の GitHub アプリが新しくなり、少し使い方が変わった部分がありますので、あらためてインストール方法と使い方をおさらいします。

GitHub アプリのインストール

インストール作業は次のとおりです。

  1. https://slack.github.com/ から [Add to Slack] で Slack にアプリを追加
  2. アクセス権限を確認して [Continue]

ちなみに公式の手順にはこのあと「3. アプリがアクセスできるチャンネルを選択」とありますが、私の環境ではこの手順はありませんでした。

さらに連携したい Slack のチャンネルごとに /invite @GitHub を実行して GitHub アプリを追加する必要があります。

/github スラッシュコマンド

実際に Slack のチャンネルに通知を飛ばすには /github スラッシュコマンドでリポジトリを購読する必要があります。

Slack の適当なチャンネルか DM で /github help とタイプして Enter を押すと /github コマンドのヘルプが見られます。

リポジトリ通知を購読する

/github subscribe owner/repository がリポジトリを購読するコマンドです。通知を受信したいチャンネルで実行します。

たとえば私 (@kenzauros) の rharbor というリポジトリであれば /github subscribe kenzauros/rharbor のようにします。

組織アカウントでも同様で、たとえば弊社のリポジトリであれば /github subscribe mseninc/first-serverless-app-2021 のようになります。

デフォルトの通知では不足な場合

ただ、 subscribe だけではプルリクに対するレビューやコメントが通知されません。弊社ではコミットの通知も出したいので、これでは不足です。

/github subscribe でデフォルトで通知される機能と通知されない機能

/github subscribe でデフォルトで通知される機能と通知されない機能

ということで /github subscribe にオプションをつける必要があります。オプションは下記のようになっています。

オプション 説明 デフォルト
issues Issue のオープン/クローズ 有効
pulls Pull request のオープン/マージ/Ready for Review 有効
commits デフォルトブランチへのコミット 有効
releases リリースの公開 有効
reviews Pull Request のレビュー 無効
comments Issue/Pull Request へのコメント 無効
branches ブランチの作成/削除 無効
commits:* すべてのブランチへのコミット 無効
+label:"your label" issues, pulls, comments をラベルでフィルタリング 無効

というわけで全部購読したいのであれば下記のようなコマンドになります。

/github subscribe owner/repository reviews comments branches commits:*

下記のように応答が返ってくれば OK です。

/github subscribe の応答

/github subscribe の応答

正直リポジトリが多いと管理がめっちゃ面倒です。

私は毎回 Slack の検索で subscribe を検索して過去に打ったものを使い回していましたが、 IME の辞書にでも登録したほうが幸せになれるかもしれません。

ATOK に /github subscribe コマンドを登録してみた

ATOK に /github subscribe コマンドを登録してみた

旧 Github Notification との相違点

2回叩かなくてよくなった

前の GitHub Notifications は一度 /github subscribe コマンドを叩いたあと、再度 reviews などをつけて有効にする機能を追加する必要がありましたが、現在の GitHub アプリは一度で設定できるようになったようです。

全てのブランチへのコミット通知が commits:* になった

前の GitHub Notifications では 全てのブランチへのコミット通知commits:all でしたが、現行では commits:* になりました。

all というブランチがあったらどういう動作になっていたのか不明ですが、たしかにこのほうがいいですね。

おすすめの記事