数日前に急にHeroku上でHugoのビルドが失敗してサイトが表示されなくなりました.
正直何もソースをいじってないのでなんでこうなったか謎でしたが、無事に本日復旧できたので、その方法をメモしておきます.
まず、どういうエラーが出ていたかというと、以下のようなものでした.
016-10-22T11:06:04.506031+00:00 heroku[slug-compiler]: Slug compilation started
2016-10-22T11:06:04.506042+00:00 heroku[slug-compiler]: Slug compilation finished
2016-10-22T11:06:04.502606+00:00 heroku[web.1]: State changed from crashed to starting
2016-10-22T11:06:05.004638+00:00 heroku[web.1]: Starting process with command `cd public && python -m SimpleHTTPServer 44776`
2016-10-22T11:06:06.962351+00:00 app[web.1]: bash: line 0: cd: public: No such file or directory
これは
heroku logs
で出力した結果です.
どうも、cd public && python -m SimpleHTTPServerで失敗しているっぽいですが、この辺のスクリプトをいじった覚えがありません.
調べた結果、このスクリプトはどうやらhugoのBuildpack側でサーバの起動コマンドとして実行されるものみたいでした.
よくよく見てみると、10/21にbuildpackがバージョンされていて、それによるデグレっぽいです.
なので、一旦動いてた旧バージョンに戻すことを考えます.
まず、READMEを見ると、以下のコマンドで旧バージョンでbuildできると書いてあります.
heroku config:set BUILDPACK_URL=https://github.com/roperzh/heroku-buildpack-hugo#v0.15
ところが、これうってもデプロイ時にv0.17でデプロイされます.
困った.
ということで、最終手段として、このbuildpackをforkしてバージョンダウンしたリポジトリを作ってそれでアプリを再作成しました.
heroku create --buildpack https://github.com/kosakasakas/heroku-buildpack-hugo.git
ログを見ていると、ちゃんとv0.15でビルドされているっぽい!
これで無事復旧することができました.
ただこれ根本解決ではないので、もし解決できる方法ご存知の方がいましたら教えてほしいです.