TL;DR
Actions Status Discord
をもっと使ってほしい
概要
GitHub Actions は GitHub にくっついている CI/CD サービスです。リポジトリにワークフローファイルを置いておくだけで勝手に実行してくれますし、ソースコードと CI/CD の結果が同じ場所で管理できるので大変便利です。
さて、CI/CD を組んでいると欲しくなるのが外部サービスへの通知です。GitHub Actions にはデフォルトで Webhook 通知ができますが、Slack や Discord には味気ない通知しか届きません:
GitHub のデフォルト通知を用いた際の Discord 通知
GitHub Actions のアクションは自由に開発・配布できるので、Slack 向けにはいい感じのアクションが存在しています:
Slack Notify - GitHub Marketplace
しかし、Discord 向けの通知アクションは存在しているものの、テキストしか投稿できなかったり、Docker アクションであったり1と、微妙なものしかありません。
せっかく Discord は Embed スタイルの綺麗なメッセージスタイルをサポートしているので、いい感じに通知を投稿してくれるアクションを作りました2:
Actions Status Discord - GitHub Marketplace
できること
こんな感じの通知が一瞬で設定できます:
詳細情報を省いたこんな感じのもできます:
詳細な紹介
結構好き勝手できるアクションなので、実際のワークフローと出力例を紹介します。
-
ステータス通知
ステータスの成功・失敗・キャンセルによって Embed の色が変わります。
- uses: sarisia/actions-status-discord@v1 if: always() env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} with: status: ${{ job.status }}
-
豊富なオプション
タイトルや説明文、Webhook 投稿ユーザの名前やアイコン変更など、多くのオプションを揃えました。
- uses: sarisia/actions-status-discord@v1 if: always() with: webhook: ${{ secrets.DISCORD_WEBHOOK }} status: ${{ job.status }} title: "deploy" description: "Build and deploy to GitHub Pages" nofail: false nodetail: false color: 0x0000ff username: GitHub Actions avatar_url: ${{ secrets.AVATAR_URL }}
詳細情報を一切なくすこともできます。
- uses: sarisia/actions-status-discord@v1 with: webhook: ${{ secrets.DISCORD_WEBHOOK }} nodetail: true title: "We did it!"
-
イベントに応じた説明文を自動生成
GitHub Actions は GitHub の豊富な Webhook イベントをフックとして実行できます。その時に渡されたイベントタイプと追加情報を元に、いい感じの説明文を生成します。
-
プッシュ
プッシュに含まれる最新コミットの SHA とコミットメッセージ
-
プルリクエスト
詳細ページへのリンク、タイトル
Discord の Embed もマークダウンに対応しているので、GitHub のメッセージをそのまま持ってくるとリンクやコードブロックが綺麗に整形されます。良いですね。
他にもいくつかのイベントに対応しています。是非プルリクエストをください。
-
使い方
README により詳細が書いてあります:
Actions Status Discord - GitHub Marketplace
sarisia/actions-status-discord
是非使ってみてください!
-
Docker アクションはイメージのプルとビルドが必要なので遅い: https://docs.github.com/en/actions/creating-actions/about-actions#types-of-actions ↩︎
-
本当は去年リリースしていたが全然発見されず悲しくなったのでこの記事を書いた ↩︎