Wercker からマイグレーションせよというメールが来たので対応してみた
CI サービスの Wercker からマイグレーションせよという以下のメールが来た。
Attention: Manual Migration required on your Wercker Account
Hi Mallowlabs,
We informed you a couple of months ago that we're going to start deprecating our non-Docker (or classic) stack in the future.
Since you have projects on our classic stack, we are pleased to announce that the time has come.
Non Docker-based applications will require a manual effort to migrate please follow this link to our stack migration wizard to start the process.
...
今回、このマイグレーションに対応した記録を共有する。
まずは https://app.wercker.com/applications/migrate にアクセスする。
Heroku deploy targets を使っているのがまずいらしい。
該当アプリの Deploys から edit をクリックする。
Delete Target をクリックして、Deploy Target を削除する。
もう一度 https://app.wercker.com/applications/migrate にアクセスすると、以下のような表示になるのでチェックを入れて、Migrate をクリックする。
アプリの Workflows タブから Add new pipeline をクリックする。
Name に heroku-deploy、YML Pipeline name に deploy を入力して Create をクリックする。
環境変数を設定する画面に遷移するので、以下の3つを入力する。
- HEROKU_APP_NAME
- HEROKU_USER
- HEROKU_KEY
Workflows タブに戻って build の後ろに heroku-deploy Pipeline を追加する。
ここでやっとソースを変更する。
diff --git a/config/mongoid.yml b/config/mongoid.yml index ccd80db..b658599 100644 --- a/config/mongoid.yml +++ b/config/mongoid.yml @@ -3,7 +3,7 @@ development: database: asakusa_satellite_development test: - host: <%= ENV['WERCKER_MONGODB_HOST'] || 'localhost' %> + host: <%= ENV['MONGO_PORT_27017_TCP_ADDR'] || 'localhost' %> database: asakusa_satellite_test production: diff --git a/wercker.yml b/wercker.yml index 0ce7ab5..80c1a0b 100644 --- a/wercker.yml +++ b/wercker.yml @@ -1,6 +1,6 @@ -box: wercker/rvm +box: ruby:2.3 services: - - wercker/mongodb + - id: mongo build: steps: - bundle-install @@ -19,3 +19,10 @@ build: after-steps: - mzp/http-notify: url: $DASHBOZU_URL +deploy: + steps: + - heroku-deploy: + key: $HEROKU_KEY + user: $HEROKU_USER + app-name: $HEROKU_APP_NAME
ポイントとしては以下の通り。
- box を指定したところは Docker コンテナを指定するようにする
- MongoDB などの services も Docker になるのでホスト名等を工夫する
- Heroku deploy は heroku-deploy を使うようにする
このあと、 変更を master に push すれば Wercker でビルド後、Heroku に deploy される。
所感
Wercker のドキュメントが Wercker Workflows に対応していないものが多くて苦労した。
この記事が誰かの役にたてば嬉しい。