地方でリモートワーク

プログラミング、先物、fx,仮想通貨なんでもやります

heroku run コマンドはデフォルトではステータス0を返すので、ciで使用するときに注意が必要

スポンサーリンク

f:id:ihatov08:20170221215712j:plain

heroku runコマンドでは各dynoに対してコマンドを実行しても、コマンドの成否に関わらずstatus 0を返します。

試しに、migrateをかけてみます。 APP_SESSION_KEYがないのでエラーが起きています。

$ heroku run rails db:migrate -a rails
Running rails db:migrate on ⬢ rails... up, run.3318 (Hobby)
rails aborted!
KeyError: key not found: "APP_SESSION_KEY"
/rails_app/config/environments/production.rb:60:in `fetch'
/rails_app/config/environments/production.rb:60:in `block in <main>'
/usr/local/bundle/gems/railties-5.2.1/lib/rails/railtie.rb:

そして直前のコマンドの成否を出力してみます。

echo $?
0

コマンドが成功したことになってしまいました。

これを回避するには--exit-codeを使用します。

heroku run -exit-code rails db:migrate

circleciで--exit-codeを使用しないと、処理がそのまま継続してしまうので注意が必要です。