chef cookbook の文法チェックをする: knife cookbook test + Travis CI
昨日は chef cookbook のテストのひとつとして、foodcritic を取り上げました。
参考にした記事 には、実はもうひとつ続きがあるので、それを紹介します。
もちろん、単なる紹介では面白くないので「簡単に使える」ようなパッケージも用意しています。
今回紹介するのは knife cookbook test による文法チェックです。
みなさん、knife cookbook test してますか? ちなみに僕はこの記事を読んで初めてその存在を知りました。
knife cookbook test はレシピやテンプレートの文法を確認してくれます。
手動で実行するには
$ knife cookbook test some_cookbook -o .
のように実行します。cookbook が配置されているディレクトリ(cookbooks や site-cookbooks)で実行するのがポイントです。
もちろん、cookbook を書き換える度にこれを手動で実行するのは面倒ですから、Travis CI で使えるようにしましょう。
前回と同じ順序で進めていきます。
必要なファイルを作る
まずは .travis.yml です。
language: ruby gemfile: - tests/support/Gemfile rvm: - 1.9.2 - 1.9.3 script: bundle exec rake chef:tests
rake で実行するタスクを chef:foodcritic から chef:tests に変更しました。
次に tests/support/Gemfile です。
source "https://rubygems.org" gem 'rake' gem 'rake-chef-syntax' gem 'rake-foodcritic'
rake-chef-syntax を追加しています。
最後に Rakefile です。
#!/usr/bin/env rake require 'rake-foodcritic' require 'rake-chef-syntax' namespace :chef do task :tests => [:foodcritic, :syntax_check] end
Rakefile では rake-chef-syntax を読み込んでいます。
また、chef:foodcritic と chef:syntax_check を続けて実行するために chef:tests というタスクを定義しています。
最後に git push して github に反映させれば Travis CI がテストを走らせてくれます。
実際の実行の様子はこちらでどうぞ。