1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHubコミットをSlack通知する方法(Slack RSSアプリを使用する編)

Last updated at Posted at 2024-01-07

この記事は?

下記の投稿の続編です。

第三者が運用している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の設定画面を表示する
    image.png
  • フィールドの追加よりフィードURLを入力する
    対象レポジトリのブランチのコミット履歴のフィードにアクセスするには、以下の通り。
    https://github.com/{user}/{repository}/commits/{branch}.atom
  • チャネルへの投稿を入力する
    上記フィードの更新を検知した際に、このチャネルに投稿されます。

実行結果

image.png

※参考に書かせていただいた記事にもありますが、RSSが更新後Slack側がフェッチした後にSlackに通知がされますので、若干タイムラグがありました。(15-20分程度は最大かかりそうです)

まとめ

本記事の手順を行うことで、対象レポジトリに対して権限を有するGitHubアカウントを所有していなくても、レポジトリのURLのみを知っていれば、Slackでコミットの更新を定期的に自動で検知できる仕組みを実現することができました。

めでたしめでたし。

参考

atomフィードは色々ある模様です。

Slack RSSアプリの仕様を調べてくださっている方がいました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?