この記事は?
下記の投稿の続編です。
第三者が運用しているGitHubレポジトリ※へのコミットをSlackワークスペースで各種更新の通知を受けるという要件を実現するための方法を調査・実装している。
※オープンソースソフトウェアのGitHubレポジトリなどを想定いただければ
上記記事では、実現方法としてSlackのGitHubアプリを利用した方法を紹介したが、残念ながら、すべてのPublicレポジトリに対応できない制約があることがわかっている。(詳細は上記の記事をご覧ください。)
今回の記事では、SlackのRSSアプリを利用し、SlackのGitHubアプリでは連携できないコミットを検知できるかを検証することを目的とします。
先に結論
Publicレポジトリであれば、atomフィード(RSS)を定期的にウォッチすれば、GitHubのアカウント不要でコミットの更新を確認できる。そこに、SlackのRSSアプリ(RSSエンドポイントをフェッチし更新を検知、差分内容をSlackへ投稿をしてくれるアプリ)を使うことで、第三者のPublicレポジトリの更新は検知できる。
環境
- Slackアプリ プロダクション 4.36.136 64-bit
- Windows 10
- GitHub(SaaS版であり、オンプレ版でも、 有償アカウントでもない)
- Slack (無料アカウント)
RSSアプリでの連携
概要
SlackのワークスペースへRSSアプリを導入し、GitHubのatomフィード(RSS)を定期的に監視(フェッチ)させることで、特定のチャネルに投稿をされるようにする。
必要なもの
- Slackワークスペースへのappのインストール権限があるSlackアカウント
インストール方法
- Slack(管理WEB画面操作)
-
https://[ワークスペース名].slack.com/apps
にブラウザでアクセス - "RSS"で検索し、インストール
-
設定方法
- Slack管理WEB画面でRSSの設定画面を表示する
- フィールドの追加よりフィードURLを入力する
対象レポジトリのブランチのコミット履歴のフィードにアクセスするには、以下の通り。
https://github.com/{user}/{repository}/commits/{branch}.atom
- チャネルへの投稿を入力する
上記フィードの更新を検知した際に、このチャネルに投稿されます。
実行結果
※参考に書かせていただいた記事にもありますが、RSSが更新後Slack側がフェッチした後にSlackに通知がされますので、若干タイムラグがありました。(15-20分程度は最大かかりそうです)
まとめ
本記事の手順を行うことで、対象レポジトリに対して権限を有するGitHubアカウントを所有していなくても、レポジトリのURLのみを知っていれば、Slackでコミットの更新を定期的に自動で検知できる仕組みを実現することができました。
めでたしめでたし。
参考
atomフィードは色々ある模様です。
Slack RSSアプリの仕様を調べてくださっている方がいました。