CI wercker v2の使い方
この記事は2016年2月で動かす場合の使用方法を紹介しています。wercker自体が開発途中で仕様が変わったりするので注意してください。
また、この記事は常時更新して書き換えていきます。よりわかりやすくより読みやすくを目指していくので、読みにくさがあってもお許しください。
ログイン〜登録
Wercker - From code to containers
werckerのサイトトップです。
ユーザー登録してログインします。
上部にあるCreateを選択してApplicationを選択します。
GitHubかBitbucketを選択する画面が出ます。
どちらかを選択して、さらにテストを実行したいリポジトリも選択します。
次の選択もRecommendされているものを選択。
Step 5でデフォルトで
■ Docker enabled. See our stacks documentation for more details.
のチェックが入っています。チェックを外すと旧版のBOXが使われます。
アプリの設定画面で後で切り替えることもできます。(上画像参照)
settingsからDockerを使うかWercker Registryのbox (classic)を使うか選択できます。
wercker.yml の設定
werckerでテストを回す際に、実行コマンドなどはwercker.ymlを参照して行われます。
wercker.ymlはテストしたいディレクトリのルート直下に置いておきます。
box: katlez/wercker-php-ruby services: - id: mysql tag: 5.5 env: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_USER: test MYSQL_PASSWORD: test MYSQL_DATABASE: test_db MYSQL_PORT_3306_TCP_ADDR: 172.17.0.2 MYSQL_PORT_3306_TCP_PORT: 3306 build: steps: - install-packages: packages: cmake - script: name: Update apt code: | sudo apt-get update - script: name: Install dependencies code: | sudo apt-get install -y php5-mysql curl libcurl3 libcurl3-dev php5-curl docker-php-ext-install bcmath docker-php-ext-install pdo_mysql curl apt-get install php5-json curl -sS https://getcomposer.org/installer | php composer install - script: name: db connect code: | php config/db.php vendor/robmorgan/phinx/bin/phinx migrate -e development - script: name: Gem Nokogiri install code: bundle config build.nokogiri --use-system-libraries - script: name: bundle install code: bundle install - script: name: RSpec code: bundle exec rspec spec
box
現在のWerckerはDockerベースで動かすことを推奨するv2です。
昔の書き方
box: wercker/php
これでWerckerRegistryに置いてあるboxイメージを参照してきて環境構築されます。
https://app.wercker.com/#explore
↑ WerckerRegistry
現在の書き方
box: katlez/wercker-php-ruby
Dockerを使用する設定をした上で、上記のように書きます。
これでDockerHubに置いてある、Dockerイメージを参照してきて環境構築されます。
https://hub.docker.com/r/katlez/wercker-php-ruby/
↑ DockerHub
services
servicesはbox:で作った環境上に使いたいミドルウェアをDockerHubから持ってきてビルドしてくれます。今回はmysqlを使っています。
id: で使いたいソフトウェアを指定します。 他には、mysql postgres mongodb etc... があります。
env: で環境変数を指定します。MYSQL_ROOT_PASSWORD 以外はオプションでの設定です。
MYSQL_DATABASE:でデータベース名を指定しておくと、service実行時に勝手にDBも作成しておいてくれるので便利です。
services: - id: mysql tag: 5.5 env: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_USER: test MYSQL_PASSWORD: test MYSQL_DATABASE: test_db MYSQL_PORT_3306_TCP_ADDR: 172.17.0.2 MYSQL_PORT_3306_TCP_PORT: 3306
Wercker Registry
wercker には wercker Registryと呼ばれる DockerHubのようなものがあります。以下の画像参照
wercker v1の時のbox情報が置いてあったり、Stepsの時に動かす処理情報がまとめて置いてあったりします。
v2ではboxの方は使いませんがStepsの方の処理では使ったりします。
こんな感じでsteps情報が登録されています。
https://app.wercker.com/#applications/51c829d13179be44780020be/tab/details
この↑の処理ををwercker.ymlのstepsのところに
steps: - wercker/bundle-install@1.1.2
と、書くと。コマンドでbundle installをするのと同じ処理を回せます。わざわざscriptで3行ほど書くよりも簡潔に一行で処理が回せるので見やすくなりますし簡潔で分かりやすいです。
WerckerRegistryにあるStepsは積極的に使っていきましょう。と言いたいところですが、あまり活発に活動されてるRegistryでもないので置いてある処理は少なめです。。。。^^;
https://app.wercker.com/#applications/53e31d00631d554c4802d374/tab/details
Wantedlyの方が作られたslack通知のstepsなどはとても便利です!