GitHub ActionsからDiscordに通知を飛ばす (Docker Push完了など)

 こんにちは。
今回はGitHub ActionsのStepからDiscordにWebhook経由で通知を飛ばして見たのでご紹介します。


なぜ作ったのか

GitHub ActionsではCIの一貫でDockerImageのBuildやDockerHubへのPushを行うことができます。しかし、規模の大きいDockerfileをマルチアーキテクチャ(amd64+arm64)などでBuildすると、10分~20分平気でかかることがあります。
そのため、完了時に完了通知とImageTagをDiscordに通知したいと思ったわけです。

仕組み

GitHub ActionsのStepでは、一般的なDockerContainerを利用することができます。今回はこれを利用してDiscordに通知を送ることにしました。
利用するDockerImageはこちらです。


利用方法

利用方法は簡単で、Docker Pushが終わった直後に通知を送るStepを追加するだけです。実際に追加するコードは以下のような感じです。


ご自身のactionsのyamlにコピーして頂き、envの部分のみ書き換えていただければすぐに利用することができます。

以下環境変数についてです。

  • WEBHOOK_URL
    • 例: "https://discord.com/api/webhooks/[hogehoge]/[hiyohiyo]"
    • discordのWebhookURLです。
      discordのテキストチャンネル横の設定→連携サービス→ウェブフックを作成から作成できます。
  • MESSAGE_USERNAME
    • 例: "GitHub Actions"
    • 一般ユーザのユーザ名に該当する部分
  • MESSAGE_AVATAR_URL
    • 例: "https://nyaaaaan.alicey.dev/sugoi_icon.png"
    • 一般ユーザのアイコンに該当する画像のリンク
  • MESSAGE_AUTHORNAME
    • "[AppName] Docker Push"
    • Embedのタイトルっぽい部分に該当する
  • MESSAGE_AUTHORICON_URL
    • "https://nyaaaaan.alicey.dev/kawaii_icon.png"
    • Embedのタイトルっぽい部分のアイコンに該当する画像リンク
  • MESSAGE_COMMENT
    • "なんかpushされたよ\nImageTag: hogehoge"
    • 本文。\nで改行とかも可能。

通知イメージ(画像未設定)
通知イメージ(画像未設定)



まとめ

導入してみると割りと便利だったので、気になる方は是非試してみてください。
また今回は行っていませんが、Build失敗時のFail通知や、テスト通過時の通知などにも対応できると思います。
GitHubはスターもらえると喜びます。




ばいち。

コメント