昔作成したHerokuアプリのPythonが3.4系だったため、Python3.7系で動作するようにアプリを修正し、Herokuへデプロイしたところ、
$ git push heroku feature/migrate-to-django2:master Enumerating objects: 171, done. Counting objects: 100% (171/171), done. Delta compression using up to 4 threads Compressing objects: 100% (130/130), done. Writing objects: 100% (148/148), 420.86 KiB | 2.36 MiB/s, done. Total 148 (delta 59), reused 1 (delta 1) remote: Compressing source files... done. remote: Building source: remote: remote: -----> Python app detected remote: -----> Found python-3.4.3, removing remote: -----> Installing python-3.7.2 remote: -----> Installing pip remote: -----> Installing requirements with pip remote: ! Push rejected, failed to compile Python app. remote: remote: ! Push failed remote: Verifying deploy... remote: remote: ! Push rejected to ringo-tabetter. remote: To https://git.heroku.com/ringo-tabetter.git ! [remote rejected] feature/migrate-to-django2 -> master (pre-receive hook declined)
とエラーになりました。
その時に対応した内容をメモします。
目次
環境
対応
heroku logs
コマンドでログを見ましたが、特に有用な情報はありませんでした。
$ heroku logs ... app[web.1]: [INFO] Worker exiting (pid: 8) app[web.1]: [INFO] Worker exiting (pid: 9) app[web.1]: [INFO] Handling signal: term app[web.1]: [INFO] Shutting down: Master app[api]: Build failed -- check your build output: https://dashboard.heroku.com/apps/xxx/activity/builds/xxx
check your build output
のURLを確認しましたが、pushした時のログと同じで、手がかりにはなりませんでした。
そんな中、Herokuアプリの情報を見ていたところ、そのアプリはCedar-14を使っていました。また、 upgrade
のリンクもありました。
Herokuのヘルプを見たところ、Cedar-14はUbuntu14.04ベースであり、deprecatedになっていました。
Stacks | Heroku Dev Center
もしかしたら、deprecatedな環境だとPython3.7系は用意されていないのかもしれないと思い、Stackをアップグレードすることにしました。
そこで、Dashboardにて upgrade
をクリックしたところ、表示が
Stack heroku-18 will replace cedar-14 on the next deploy
に変わりました。
次に、再度同じブランチをpushしたところ、問題なく完了しました。
$ git push heroku feature/migrate-to-django2:master ... remote: Verifying deploy... done. To https://git.heroku.com/ringo-tabetter.git
古いStackを使っていたのがダメだったようです。
ただ、公式ドキュメントによると、Cedar-14でPython3.7.2は使えるようです。何かのタイミングでしょうか... https://devcenter.heroku.com/articles/python-support#supported-runtimes