使用TravisCI进行持续测试来进行Cookbook的标准检查,使用Foodcritic工具

这篇文章距离最后更新已经超过一年了,请注意。

MVT:根据Foodcritic和Travis CI ,

当我编写OpsCode Chef的CookBook后,我会将其展示给评论家Foodcritic。
如前所述,每次我将其推送到Github上时,我都会要求TravisCI自动执行foodcritic。

美食评论家 shí jiā)

使用以下命令在终端中安装foodcritic或在Gemfile中编写并执行bundle。

先试着运行一下针对正在创建的apt中安装MongoDB并进行一些操作的步骤。

$ foodcritic cookbooks/mongodb-10gen/
FC001: Use strings in preference to symbols to access node attributes: cookbooks/mongodb-10gen/recipes/replica-set.rb:48
FC001: Use strings in preference to symbols to access node attributes: cookbooks/mongodb-10gen/recipes/replica-set.rb:50
FC001: Use strings in preference to symbols to access node attributes: cookbooks/mongodb-10gen/recipes/single.rb:42
FC001: Use strings in preference to symbols to access node attributes: cookbooks/mongodb-10gen/recipes/single.rb:44
FC002: Avoid string interpolation where not required: cookbooks/mongodb-10gen/recipes/replica-set.rb:31
FC002: Avoid string interpolation where not required: cookbooks/mongodb-10gen/recipes/replica-set.rb:59
FC002: Avoid string interpolation where not required: cookbooks/mongodb-10gen/recipes/single.rb:25
FC019: Access node attributes in a consistent manner: cookbooks/mongodb-10gen/recipes/replica-set.rb:48
FC019: Access node attributes in a consistent manner: cookbooks/mongodb-10gen/recipes/replica-set.rb:50
FC023: Prefer conditional attributes: cookbooks/mongodb-10gen/recipes/replica-set.rb:58

让我们确保同样的输出也可以从TravisCI获得,而不只是适用于规则1、2、19和23。

TravisCI (只需要一个选项)

在存储库中添加适用于Travis CI的设置。

将一些内容添加到git仓库中

为了避免与CookBook发生冲突,请使用专用的Gemfile路径。

language: ruby
gemfile:
   - test/support/Gemfile
rvm:
  - 1.9.2
  - 1.9.3
script: bundle exec rake foodcritic

指定将rake和foodcritic与bundle一起使用。

source "https://rubygems.org"

gem 'rake'
gem 'foodcritic'
#!/usr/bin/env rake

desc "Runs foodcritic linter"
task :foodcritic do
  if Gem::Version.new("1.9.2") <= Gem::Version.new(RUBY_VERSION.dup)
    sandbox = File.join(File.dirname(__FILE__), %w{tmp foodcritic cookbook})
    prepare_foodcritic_sandbox(sandbox)

    sh "foodcritic --epic-fail any #{File.dirname(sandbox)}"
  else
    puts "WARN: foodcritic run is skipped as Ruby #{RUBY_VERSION} is < 1.9.2."
  end
end

task :default => 'foodcritic'

private

def prepare_foodcritic_sandbox(sandbox)
  files = %w{*.md *.rb attributes definitions files libraries providers
recipes resources templates}

  rm_rf sandbox
  mkdir_p sandbox
  cp_r Dir.glob("{#{files.join(',')}}"), sandbox
  puts "\n\n"
end

设置rake命令默认执行foodcritic。

请点击以下链接开始执行。

可以在下面的链接中找到higanworks-cookbooks/mongodb-10gen的Travis CI构建状态:https://travis-ci.org/#!/higanworks-cookbooks/mongodb-10gen

在TravisCI上,可以确认和在本地运行foodcritic时产生的相同输出。

让我们来改正它吧。

广告
将在 10 秒后关闭
bannerAds