serverspecの実行結果をJUnit.xml形式で出力する
この記事は最終更新日から9年以上が経過しています。
serverspecの実行結果をJenkinsで表示するためにJUnit.xml形式で出力する方法
事前準備
- rspec_junit_formatter のインストール
gem install rspec_junit_formatter
Rakefileの変更
serverspec-init を実行してできたRakeファイルを以下のように書き換える
require 'rake'
require 'rspec/core/rake_task'
task :spec => 'spec:all'
task :default => :spec
namespace :spec do
targets = []
Dir.glob('./spec/*').each do |dir|
next unless File.directory?(dir)
target = File.basename(dir)
target = "_#{target}" if target == "default"
targets << target
end
task :all => targets
task :default => :all
targets.each do |target|
original_target = target == "_default" ? target[1..-1] : target
desc "Run serverspec tests to #{original_target}"
RSpec::Core::RakeTask.new(target.to_sym) do |t|
ENV['TARGET_HOST'] = original_target
if ENV['CI_FLAG']
t.rspec_opts = "--format RspecJunitFormatter --out ./report/results_#{original_target}.xml"
end
t.pattern = "spec/#{original_target}/*_spec.rb"
end
end
end
元ファイルとの差分は以下のとおり
desc "Run serverspec tests to #{original_target}"
RSpec::Core::RakeTask.new(target.to_sym) do |t|
ENV['TARGET_HOST'] = original_target
+ if ENV['CI_FLAG']
+ t.rspec_opts = "--format RspecJunitFormatter --out ../report/serverspec/results_#{original_target}.xml"
+ end
t.pattern = "spec/#{original_target}/*_spec.rb"
end
end
実行方法
以下のように実行すると./report/
にJUnit.xml形式で出力される
rake CI_FLAG=true spec
serverspecの実行結果をJUnit.xml形式で出力する