werckerとはCI「継続的インテグレーション」サービスです。
簡単に言うとgitでpushした際にフックして外部でビルド(テスト)やデプロイを行ってくれるサービスです。
wercker.ymlに記述し、設定を行っていきます。
Bitbucketでpushした際にwerckerへ自動ビルド、Herokuへデプロイする設定にしています。
werckerのビルド、デプロイ時に起こったエラーの解決をした際の備忘録を残しておこうと思います。
wercker側で出たエラーは日本語のドキュメントが少なく、エラーの原因特定をすることがとても難しいと思いました。
同じエラーで悩んでいる方がいればこの記事が少しでも参考になればと思います。
■werckerデプロイ時にUpdate databaseで起こったエラー
・デプロイ時に出たエラーは下記となります。
cd $WERCKER_SOURCE_DIR
RVM used your Gemfile for selecting Ruby, it is all fine - Heroku does that too,
you can ignore these warnings with 'rvm rvmrc warning ignore /pipeline/build/Gemfile'.
To ignore the warning for all files run 'rvm rvmrc warning ignore allGemfiles'.
$ export WERCKER_STEP_ROOT="/wercker/steps/wercker/script/0.0.0"
$ export WERCKER_STEP_ID="de8f5c66-69b7-43a8-abca-b6d55c55c42a"
$ export WERCKER_STEP_NAME="script"
$ export WERCKER_REPORT_NUMBERS_FILE="$WERCKER_REPORT_DIR/$WERCKER_STEP_ID/numbers.ini"
$ export WERCKER_REPORT_MESSAGE_FILE="$WERCKER_REPORT_DIR/$WERCKER_STEP_ID/message.txt"
$ export WERCKER_REPORT_ARTIFACTS_DIR="$WERCKER_REPORT_DIR/$WERCKER_STEP_ID/artifacts"
$ mkdir -p $WERCKER_REPORT_ARTIFACTS_DIR
$ export WERCKER_STEP_TEMP="/tmp/$WERCKER_STEP_ID"
$ source '/wercker/wercker-build-essentials/init.sh'
$ mkdir -p $WERCKER_STEP_TEMP
$ heroku run rake db:migrate --app $APP_NAME
Installing Heroku Toolbelt v4... done.
For more information on Toolbelt v4: https://github.com/heroku/heroku-cli
Setting up node-v4.1.1...done
Installing core plugins heroku-cli-addons, heroku-apps, heroku-fork, heroku-git, heroku-local, heroku-run, heroku-status... done
▸ -a, --app APP needs a value
◎解決方法
最初Heroku Toolbeltの部分で止まっているのでそこに原因があるものだとばかり思っていましたが、
原因はwerckerが Docker enable(Ewok)に移行した為、HerokuへのDeployで必要な環境変数の指定が変わっていたことにありました。
解決方法としては、「wercker.yml」に記述していた環境変数「$APP_NAME」から「$HEROKU_APP_NAME」へ変更することによってエラーの解消ができました。
環境変数を変える単純なことでしたがこのエラーは本当に苦しみました。
■エラーが出ていた時のwercker.ymlのdeploy部分の記述
deploy:
steps:
- heroku-deploy:
install-toolbelt: true
- script:
name: Update database
code: heroku run rake db:migrate --app $APP_NAME
■エラー解決した際のwercker.ymlのdeploy部分の記述
deploy:
steps:
- heroku-deploy:
install-toolbelt: true
- script:
name: Update database
code: heroku run rake db:migrate --app $HEROKU_APP_NAME #ここを変更しました
■下記サイトがとても参考になりとても感謝しています。
・wercker Classic(Andorian)からDocker enable(Ewok)に移行する
http://natural-hokke.hateblo.jp/entry/2015/06/02/180557
次回ブログでもwerckerのビルド、デプロイ時に起こったエラー解消の備忘録を書ければと思っています。