GitHubとSlackを連携してみた
目次
本記事は、クラウドビルダーズ株式会社のアドベントカレンダー2024の1日目の記事となります!
はじめに
こんにちは、CloudBuildersのsugawaraです。
多くの開発現場ではGitHubなどのリポジトリサービスとSlackを連携して、通知を受け取る仕組みを導入していることが多いかと思います。自分も普段はすでに連携・設定されたSlackチャンネルにて、適宜GitHubから通知を受け取っていますが、他にどういったことができるのか気になり、自分のワークスペースで検証してみました。
今回は自分の検証用にGitHubとSlackを連携させてみたので、その連携方法と簡単なコマンド操作をまとめていきたいと思います!
連携方法
まずSlackにGitHub Appをインストールします。slack.github.comにアクセスして、Add to Slackをクリックします。
画面右上のワークスペース名が、インストールしたいワークスペース名になっているかを確認し、問題がなければ許可するをクリックします。
Slackにリダイレクトされ、左側サイドバーのAppにGitHubが追加されていることが確認できます。
次に、App内のGitHubを開き、Connect GitHub Accountをクリックします。
webブラウザが開き、連携するかどうか聞かれますので、Connect GitHub Accountをクリックします。
すでに連携したことがある場合、下記のようにGitHubアカウントが表示されますので、必要に応じて選択します。新規アカウントを追加する場合には、Use a different accountを選択します。
新規にGitHubアカウントを追加する場合、下記のような画面になります。必要事項を記入してサインインします。
下記のような認証コードが発行されます。
Slackに戻ってGitHub AppのEnter codeをクリックし、さきほどの認証コードを入力します。
下記のような画面になれば、GitHubとSlackの連携は完了です。連携自体はサクッとできますね。
コマンドによる設定
GitHubとSlackの連携が完了したら、次は具体的に「どのリポジトリ」の「何の通知」を受け取るかを設定します。
まずは通知を受け取りたいリポジトリの設定(サブスクライブ/アンサブスクライブ)です。
# リポジトリのサブスクライブ
/github subscribe ower/repo
# 実際の例
/github subscribe Kazuya4133/github-slack-integration
# リポジトリのアンサブスクライブ
/github unsubscribe ower/repo
# 実際の例
/github unsubscribe Kazuya4133/github-slack-integration
実際にサブスクライブコマンドを実行すると、下記のように表示されます。これで、指定したリポジトリのissues、pulls、commits、releases、deploymentsについての通知が送られてくるようになります。
なお、リポジトリは指定せず、ownerのみを指定することで、owner配下のすべてのリポジトリから通知を受け取ることもできます。
# ownerのすべてのリポジトリをサブスクライブ
/github subscribe ower
# ownerのすべてのリポジトリをアンサブスクライブ
/github subscribe ower
サブスクライブコマンドを実行すると、デフォルトでは、下記の項目がサブスクライブされた状態となります。
項目 | 内容 |
issues | オープン/クローズされたissue |
pulls | 新規/マージされたプルリクエスト、および「レビュー準備完了」とマークされたドラフトプルリクエスト |
commits | デフォルトブランチへの新しいコミット(通常はmain) |
releases | 公開されたリリース |
deployments | 展開ステータスの更新 |
次に通知内容のカスタマイズをします。もし上記の項目で不要なものがあれば、予め通知の解除も可能です。例えばreleasesが不要な場合には、下記のコマンドを実行します。
/github unsubscribe Kazuya4133/github-slack-integration releases
また、通知されるブランチの変更も可能です。デフォルトではcommitsはデフォルトブランチ(mainブランチ)への新しいコミットが通知されますが、developブランチへのcommitsを通知したい場合には、下記のコマンドを実行するとサブスクライブできます。※mainとdevelopの2つをサブスクライブするといったことはできないようです。
/github subscribe Kazuya4133/github-slack-integration commits:develop
また、デフォルト以外にも下記の項目を追加することもできます。
項目 | 内容 |
workflows | アクションワークフロー実行通知 |
reviews | プルリクエストのレビュー |
comments | 問題とプルリクエストに関する新しいコメント |
branches | 作成または削除されたブランチ |
commits:* | すべてのコミットが任意のブランチにプッシュされる |
+label:”your label” | ラベルに基づいて問題、プルリクエスト、コメントをフィルタリングします。 |
discussions | 作成または回答されたディスカッション |
例えばworkflowsでは、GitHub Actionsのワークフロー実行通知をサブスクライブできます。下記はサンプルです。
/github subscribe owner/repo workflows:{name:"your workflow name" event:"workflow event" branch:"branch name" actor:"actor name"}
# 実際の例
/github subscribe Kazuya4133/github-slack-integration workflows:{name:"event:"pull_request" branch:"main","develop"}
ブランチを特定せず、すべてのcommitを通知したい場合には下記のコマンドで設定ができます。
/github subscribe Kazuya4133/github-slack-integration commits:*
最後に、サブスクライブ状況を確認できるコマンドも紹介しておきます。
# 現在サブスクライブしているリポジトリのリスト
/github subscribe list
# 現在サブスクライブしているリポジトリとその項目
/github subscribe list features
おわりに
今回はGitHubとSlackを連携させて、コマンドで通知内容を設定してみました。これにより、必要な情報をリアルタイムで受け取り、効率的な開発につながるかと思います。自分のチームやプロジェクトの状況に合った通知設定を試してみてください!