この記事は岩手県立大学とか、岩手の人たち Advent Calendar 2021の 8 日目の記事です!
はじめに
現在、GitHub の Slack App では GitHub Discussions で Discussion やコメントが作成されたときの通知に対応していません。
そこで、GitHub Actions を使って、
- Discussion の作成
- Discussion へのコメントの作成
を Slack に通知するまでを記事としてまとめます。
Slack で Webhook の設定
Slack の Webhook の URL を用意しておきます。
以下の記事が参考になります。
GitHub Actions の設定
通知を受け取りたい GitHub Discussions のあるリポジトリに GitHub Actions の workflow を設定します。
workflow は以下のようになります。
(jq
を使う例がいくつかありましたが、一番シンプルなものにしました。)
on:
discussion:
types: [created]
discussion_comment:
types: [created]
jobs:
discussion_created:
runs-on: ubuntu-latest
if: github.event.discussion && !github.event.comment
steps:
- run: |
curl -X POST -d '{ "text": "Created discussion: ${{ github.event.discussion.html_url }}" }' ${{ secrets.SLACK_WEBHOOK_URL }}
discussion_commented:
runs-on: ubuntu-latest
if: github.event.discussion && github.event.comment
steps:
- run: |
curl -X POST -d '{ "text": "Created discussion comment: ${{ github.event.comment.html_url }}" }' ${{ secrets.SLACK_WEBHOOK_URL }}
あとは、リポジトリのSettings > Secrets
で取得した Webhook の URL をSLACK_WEBHOOK_URL
として登録してあげれば完了です。
解説
on:
discussion:
types: [created]
discussion_comment:
types: [created]
workflow を実行する event で、
-
discussion
- Discussion のイベント
-
discussion_comment
- Discussion へのコメントのイベント
です。
また、event には type があり、作成(created
)、編集(edited
)などの type ごとに event を発火させることができます。
discussion_created:
runs-on: ubuntu-latest
if: github.event.discussion && !github.event.comment
省略...
discussion_commented:
runs-on: ubuntu-latest
if: github.event.discussion && github.event.comment
各 job についているif
では、Discussion が作成されたのか、Discussion へのコメントが作成されたのかを判定しています。
github.event.discussion
は対象となった Discussion のオブジェクトが含まれているため、コメントをした際でもgithub.event.discussion
にはオブジェクトが入っています。
また、Discussion へのコメントをした際には、github.event.comment
にコメントの情報が入っています。そのため、github.event.comment
の中身を確認し、Discussion か Discussion へのコメント化を判定しています。
実際に何が入っているかは以下のようにすると確認できます。
check_github_event_discussion:
runs-on: ubuntu-latest
steps:
- run: echo "${{ toJSON(github.event.discussion) }}"
動作テスト
試しに Discussion を作成してみると、、、
無事に Slack 通知が来ました!
最後に
GitHub の Slack App で対応してほしい、、
追記
2022/01/25
GitHub の Slack App で Discussions が一部サポートされたみたいです。
Discussion コメントはまだなので、今後に期待ですね。