blog.bouzuya.net

2016-12-12 Travis CI での Heroku Deployment の Error を直した

Travis CI での Heroku Deployment に失敗する状態を修正した。今日はその原因と修正方法について書く。

travis-ci.org/bouzuya/mr-jums は随分前から失敗し続けている。build history を見る限り、名前を bouzuya/bbn-cycle から bouzuya/mr-jums に変えてから、ずっと失敗している。

CI の失敗する理由は deployment だと分かっている。ただ deployment に失敗する理由を分かっていなかった。

まず mr-jums は開発中の確認用の環境として Heroku を選んでいる。ぼくのつくる application はなるべく 12 factors app にしているので、 Heroku でなくてもそんなに困らないのだけど……。まあ手軽だからだ。heroku create && git push heroku master で動くのを手軽と言わずして何と言うか。

で、 Travis CI から Heroku への deployment に失敗していた。手順どおりに設定しているはずで、何度も手順に従って修正していた。手順は Heroku Deployment - Travis CI に書いてあるとおりだ。

以下に手順を示す。

基本的な設定は travisheroku の両方の CLI をインストールしていれば簡単だ。次のようなコマンドで deploy.api_key に Heroku の API Key を暗号化して設定する。ほかにもいくつかの key を設定する必要はある。

travis encrypt $(heroku auth:token) --add deploy.api_key

そんなに難しいことはしていないはず……。しかし、失敗した。

今日 document を眺めてみて、次のような command を知った。

travis setup heroku

deployment まわりの初期設定を一括で実施するものだ。これを実行した際の prompt で「 deployment は bouzuya/bbn-cycle だけか?」(意訳) と聞いてくることに気づいた。

おかしい。 bouzuya/mr-jums の travis 設定でなぜ bbn-cycle の名前が出るのか。travis show で確信した。

$ travis show
Build #30:  DEPRECATED
State:         passed
Type:          push
Branch:        master
Compare URL:   https://github.com/bouzuya/bbn-cycle/compare/33cba4ca5db8...3b97b612bfd5
Duration:      6 min 57 sec
Started:       2016-10-11 09:21:36
Finished:      2016-10-11 09:24:08

#30.1 passed:    2 min 27 sec   node_js: node, os: linux
#30.2 passed:    2 min 15 sec   node_js: 6, os: linux
#30.3 passed:    2 min 15 sec   node_js: 5, os: linux

travis が対象となる repository を間違えている。

そこで次のような修正を入れたところ、はじめて master で build が通った。

travis encrypt -r bouzuya/mr-jums $(heroku auth:token) --add deploy.api_key

travistravis encrypt 以外で使ったことはなかったのだけど、実は repository の判定に失敗していることもあるので travis show するのもありだと分かった。

またあとで Qiita に書く。→書いた。『 Travis CI への Heroku Deployment に失敗する場合の一例 - Qiita