Pushover

個人の通知ツールとして、Pushover を愛用しています。[2015-03-08-1] でも紹介してます。

  • GitHub の自分のリポジトリにスターが付いたら通知
  • Pushover gem を使った、若干複雑なケースのデプロイ通知
  • Heroku にデプロイしたら通知

今まで Heroku のデプロイ通知は Heroku Deploy Hooks の EmailPushover の E-mail Gateway を指定して出来ていましたが、Heroku Deploy Hooks の Email は 2018 年 5 月に Deprecate になっていました

仕方がないので、Heroku Deploy Hooks の HTTP post hook で通知する方法を調べました。

デプロイ成功の通知方法

結論から書くと、GET パラメータっぽくダラダラと書けば通知出来ました。
なぜか通知されなくて一人ハマってましたが…

Heroku HTTP POST Hook using Pushover

以下は改行と半角スペースを入れて読みやすくしたものです。各パラメータは 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):
「デプロイ失敗の通知方法」を追記しました。