HEROKUで使用しているスタックがEnd of Lifeで新しいスタックに移行が必要になりました。
うっかり忘れていたので新スタックでの検証や移行作業に手間取ってしまいました。特に手順を失敗したのでビルドがうまくできずにフリーズ状態になってしまいました。
今までHEROKUへのデプロイメントはまったく問題がなかったので焦りました。ダッシュボードからキャンセル操作できるだろうと思っていたらログしか見ることができずにびっくり。
ということで、メモとしてキャンセル方法を残しておきます。
HEROKU CLI plugin インストール
ダッシュボードから操作できないとなると、HEROKU CLIが手段として考えられます。調べてみるとCLIのpluginとして機能提供しているようです。
さっそくプラグインをインストールです。
$ heroku plugins:install heroku-builds
ビルド状況の確認
インストールするとbuilds:infoコマンドが使用できるようになります。ビルド状況を見るには下記のいずれかのコマンドで見ることができると思います。
$ heroku builds:info -a [app-name]
$ heroku builds:info --app [app-name]
$ heroku builds:info --remote [stack-name]
ビルドが停止していると下記のようにステータスがpendingの状態になっていると思います。
=== Build 8e44xxxx-xxxx-xxxx-xxxx-xxxx3367e505
Buildpacks: https://buildpack-registry.s3.amazonaws.com/buildpacks/heroku/ruby.tgz
By: [email protected]
Status: pending
When: 2019-08-31T15:10:18Z
ビルドのキャンセル
ビルドをキャンセルするにはbuilds:cancelコマンドを実行します。実行する際はビルドIDを指定したほうが良いです。何も指定しないと最新のIDに対して実行されるようです。
$ heroku builds:cancel [build-id] -a [app-name]
$ heroku builds:cancel -a [app-name]
Stopping build 8e44xxxx-xxxx-xxxx-xxxx-xxxx3367e505... done
キャンセル後にもう一度ステータスを確認すると今度はfailedになっていると思います。
改めて設定などを見直して再ビルドの準備をしましょう。
=== Build 8e44xxxx-xxxx-xxxx-xxxx-xxxx3367e505
Buildpacks: https://buildpack-registry.s3.amazonaws.com/buildpacks/heroku/ruby.tgz
By: [email protected]
Status: failed
When: 2019-08-31T15:10:18Z
ビルドが成功すると下記のようになります。
=== Build 8e44xxxx-xxxx-xxxx-xxxx-xxxx3367e505
Buildpacks: https://buildpack-registry.s3.amazonaws.com/buildpacks/heroku/ruby.tgz
By: [email protected]
Release: v34
Status: succeeded
When: 2019-08-31T15:20:18Z