個人の通知ツールとして、Pushover を愛用しています。[2015-03-08-1] でも紹介してます。
- GitHub の自分のリポジトリにスターが付いたら通知
- Pushover gem を使った、若干複雑なケースのデプロイ通知
- Heroku にデプロイしたら通知
今まで Heroku のデプロイ通知は Heroku Deploy Hooks の Email に Pushover の E-mail Gateway を指定して出来ていましたが、Heroku Deploy Hooks の Email は 2018 年 5 月に Deprecate になっていました 。
仕方がないので、Heroku Deploy Hooks の HTTP post hook で通知する方法を調べました。
デプロイ成功の通知方法
結論から書くと、GET パラメータっぽくダラダラと書けば通知出来ました。
(なぜか通知されなくて一人ハマってましたが…
)
以下は改行と半角スペースを入れて読みやすくしたものです。各パラメータは url encode が必要です。
https://api.pushover.net/1/messages.json
? user=<YOUR USER/GROUP KEY>
& token=<YOUR APPLICATION API TOKEN>
& device=iPhone
& priority=0
& title=masutaka.net+has+deployed
& message=masutaka+deployed+app
& url=https%3A%2F%2Fdashboard.heroku.com%2Fapps%2Fmasutaka-net
初めに curl で試してから HTTP post hook の URL を構築すると良いでしょう。
curl -s -X POST \
-d user=<YOUR USER/GROUP KEY> \
-d token=<YOUR APPLICATION API TOKEN> \
-d device=iPhone \
-d priority=0 \
-d title=masutaka.net+has+deployed \
-d message=masutaka+deployed+app \
-d url="https%3A%2F%2Fdashboard.heroku.com%2Fapps%2Fmasutaka-net" \
https://api.pushover.net/1/messages.json
各パラメータの説明はドキュメント を参考にしてください。注意点として、ドキュメントには {{user}} のような変数を使える記述 がありますが、HTTP post hook では使えませんでした。他の Deploy Hooks では使えるようですが。
ちなみに私は Heroku の管理に terraform を使っており、かなりすっきり書くことが出来ました。
デプロイ失敗の通知方法
Heroku Deploy Hooks の Email はデプロイ失敗は通知しません。
代わりに [email protected] から以下の Subject でメールが届きます。他のパターンもあるかもしれません。
Subject: Automatic deployment of
failed.
or
Subject: Release phase command failed to execute
仕方がないので、Gmail のフィルタで Pushover の E-mail Gateway に転送することにしました。
Heroku → 私の Gmail アドレス → Pushover
フィルタは以下のように設定しました。Email Body に Heroku の APP NAME が含まれているので、それを参照するフィルタにしました。
- 条件: from:([email protected]
) subject:failed
- 処理: 受信トレイをスキップ, 既読にする,
@pomail.net に転送
優先度を上げて、iOS 上での表示を赤くします。さらに Heroku からの Email の Subject と Body を書き換えて、iOS 上での表示を分かりやすくします。https://pushover.net/email/:id
から設定できます。
- Priority: 1 (High, bypass Quiet Hours)
- Replace E-mail Subject: deploy to masutaka.net
- Replace E-mail Body: masutaka failed to deploy app
これで失敗も通知してくれそうです。← まだ確認してない
追記(2019-01-25):
「デプロイ失敗の通知方法」を追記しました。