やりたいこと
GitHub Organizationを使ってチーム開発するときに、開発チームのDiscordにコミット通知とかを飛ばしたいです。
学生のロボット開発とかだとチーム内のモチベーション維持が一番大事なので「あっ、あいつ今進捗産んでるのか。」っていう雰囲気を出すことでやる気を維持したいと思います!!!
成果物
こんな感じでGitHubからの通知と感謝メッセージを送ってくれます。Issueは特に見逃したらやばいので通知してくれます。
実現手段
GitHubのWebhookをDiscordにBotとして追加する
チャンネルを作る
コミットって結構頻繁にやるので、通常の会話とは隔離したいです。チャンネルを新しく作るのが無難だと思います。
こんな感じです。
Webhook URLを発行する
「ウェブフックを作成」を押して
- 任意の名前
- さっき作成したチャンネル
- アイコン
を設定します。今回私は可愛いOctocatのアイコンを作成して使いました。
できたらウェブフックURLをコピーしておきます。
Webhookのテスト
ターミナルで以下のコマンドを叩きます。
% curl -X POST -F content="やぁ!進捗どうだい?" https://discord.com/api/webhooks/**********
うまくいけば先ほどのチャンネルにOctocat名義でメッセージが届きます。
早速メンバーがなんか変なリプを飛ばしてきましたが、少なくともモチベーション維持の効果があるようです。ちょろすぎ
GitHub OrganizationにWebhookを登録
https://github.com/organizations/YOUR_ORGANIZATION/settings/hooks
にアクセスして右上のAdd webhookを押します。
- Payload URL さっきのURL +末尾に
/github
- Contetnt type
application/json
にする - Which events whold you like to trigger this webhook?は適当なものを選ぶ
末尾の/github
をつけ忘れると何も動かないので注意してください!!
CommitとかIssueとからへんを設定するといいと思います。後述する感謝メッセージを送りたい人はGitHub Actions関連のチェックを外さないと多重が起こるので気をつけてください。
この状態で何かアクションをGitHubでとるとこのようなメッセージがきます。
感謝メッセージ
GitHubからの通知だけだと味気ないのでGitHub Actionを使って感謝メッセージを送りたいと思います。
OrganizationのSettingsのActions secrets and variablesにWEBHOOK_URL
という名前でsecretsを登録します。
そして変化があった時に感謝メッセージを送りたいリポジトリにGitHub Actionsを追加していきます。
name: commit notify
on:
push:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Discord Message Notify
run: curl -X POST -F content="${{ github.actor }}がコミットしてくれた!!進捗ありがとう😁" ${{ secrets.WEBHOOK_URL }}
name: Issue notify
on:
issues:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Discord Message Notify
run: curl -X POST -F content="${{ github.actor }}がIssueを立てたよ👀 みんな確認して‼️ @everyone" ${{ secrets.WEBHOOK_URL }}
感謝しなくていいようなしょうもないリポジトリには追加しなくていいです。
動作確認
適当にコミットしたりIssue建てたりして通知が来たら成功です。
おわりに
みんなやる気出してくれるといいな