ようへいの日々精進XP

よかろうもん

俺の板場修行道(1)〜 itamae で test-kitchen と Serverspec を wercker で出前する〜

おしながき

README

細かい手順等は以下の README にて。

github.com

更にハマった点等については以下にて。


出前迅速(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 上での環境の準備に殆ど時間が割かれてしまっている...)

f:id:inokara:20150801162408p:plain

その他、以下のように出前はかなりの茨の道だった。

wercker-labs/docker の Ubuntu バージョンが古かった問題

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 methodfind_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 完了時間は短縮出来そう)