おしながき
README
細かい手順等は以下の README にて。
更にハマった点等については以下にて。
出前迅速(wercker で CI する)
wercker で CI する
最近、なんでも wercker で CI するのがマイブームなので、こちらを参考にさせて頂いて以下のような wercker.yml を作成。
box: wercker-labs/docker no-response-timeout: 10 build: steps: - script: name: apt-get update code: |- sudo sed -i -e 's/us-east-1.ec2.archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list && sudo apt-get update -y - script: name: rvm install code: | curl -sSL https://rvm.io/mpapis.asc | gpg --import - curl -sSL https://get.rvm.io | bash -s stable source $HOME/.rvm/scripts/rvm rvm install 2.2.2 --default echo "gem: --no-rdoc --no-ri" >> $HOME/.gemrc - rvm-use: version: 2.2.2 - script: name: bundle install code: | gem install bundler bundle install - script: name: run kitchen test code: | bundle exec kitchen test after-steps: - sherzberg/slack-notify: subdomain: $SLACK_TEAM token: $SLACK_TOKEN channel: $SLACK_CHANNEL username: wercker icon_url: https://avatars3.githubusercontent.com/u/1695193?s=140
git push
してから Serverspec が実行完了まで Docker コンテナを利用しているにもかかわらず 10 分近く掛かってしまっているのは辛い(wercker 上での環境の準備に殆ど時間が割かれてしまっている...)
その他、以下のように出前はかなりの茨の道だった。
wercker-labs/docker の Ubuntu バージョンが古かった問題
- https://github.com/wercker/wercker-labs-docker/issues/6 に記載されている内容で対策
wercker-labs/docker の Docker バージョンが古かった問題
$ docker version Client version: 1.2.0 Client API version: 1.14 Go version (client): go1.3.1 Git commit (client): fa7b24f OS/Arch (client): linux/amd64 Server version: 1.2.0 Server API version: 1.14 Go version (server): go1.3.1 Git commit (server): fa7b24f
上記の Docker バージョンの場合には docker build
のオプションとして -f
が存在しないので kitchen-docker の 2.2.0 以上を利用しようとすると kitchen create
時にコケてしまう実装があった為 Gemfile でバージョンを固定する必要があった。
source "https://rubygems.org" gem 'test-kitchen' gem 'kitchen-itamae' gem 'kitchen-docker', '2.1.0' gem "docker-api" gem "serverspec"
rvm インストールで gpg キーの検証に失敗した問題
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
を実行するように追加
冷菓(おまけ)
検証環境の Ruby バージョンが古すぎる問題
自分の検証環境は MacOS X 10.10 にはなっているものの Ruby のバージョンが boxen でインストールした Ruby 2.0.0 という古参バージョンだったのでこれを今更だが更新して test-kitchen が動くようになった。(Ruby 2.0.0 環境だと undefined method
find_files_from_load_path'` というエラーが出てしまっていた..orz)
% cd /opt/boxen/rbenv/plugins/ruby-build % git pull % rbenv install --list % rbenv install 2.2.2 % rbenv global 2.2.2 % rbenv versions system 2.0.0 2.0.0-p247 * 2.2.2 (set by /opt/boxen/rbenv/version) % ruby -v ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]
最後に
ちゃんと itamae と向きあえていないので...
引き続き itamae 道を精進したい。
itamae で test-kitchen は...
Ruby のバージョン等に悩まされることがあった(検証環境の問題)がサクッと動いたのは嬉しかった。有難うございます。
wercker で CI する意味
あるのか無いのか悩みどころで git push
してから CI 完了までの時間が 10 分だとローカル環境で test-kitchen を回した方が速いが、実行結果が残るという点では意味があると考えたい。(wercker 側で Box を準備しておく等で CI 完了時間は短縮出来そう)