diff options
author | Marc A. Paradise <marc.paradise@gmail.com> | 2021-04-09 16:44:51 -0400 |
---|---|---|
committer | Marc A. Paradise <marc.paradise@gmail.com> | 2021-04-21 13:05:37 -0400 |
commit | e52712c79ab31d03790d398ebc8c4268e30e8240 (patch) | |
tree | 75e0235f987ac25e30f75a768c27e00e68b23a3b | |
parent | f83776b8180f23d92dd5f69a24b4063a34364543 (diff) | |
download | chef-mp/knife-gem-specs.tar.gz |
WIP - add a tesk to invoke buildkite container tests locallymp/knife-gem-specs
Signed-off-by: Marc A. Paradise <marc.paradise@gmail.com>
-rw-r--r-- | Rakefile | 1 | ||||
-rw-r--r-- | tasks/bkrun.rb | 49 |
2 files changed, 50 insertions, 0 deletions
@@ -25,6 +25,7 @@ begin require_relative "tasks/dependencies" require_relative "tasks/docs" require_relative "tasks/spellcheck" + require_relative "tasks/bkrun" unless ENV.key?('CI') require_relative "chef-utils/lib/chef-utils/dist" unless defined?(ChefUtils::Dist) rescue LoadError => e puts "Skipping missing rake dep: #{e}" diff --git a/tasks/bkrun.rb b/tasks/bkrun.rb new file mode 100644 index 0000000000..80f19938dd --- /dev/null +++ b/tasks/bkrun.rb @@ -0,0 +1,49 @@ +require "yaml" + +namespace :bkrun do + def create_tasks_from_expeditor_verification_pipeline + spec = YAML.load_file(".expeditor/verify.pipeline.yml") + spec["steps"].each do |step| + + if step.class == Hash && image = step.dig("expeditor", "executor", "docker", "image") + image = image.split("/")[1] + #os, rubyversion = image.split(":") + test_group, component_name = nil + step["commands"].each do |cmd| + test_group ||= if cmd == "rake spec" + "spec" + elsif cmd =~ /rake spec:(.*)/ + $1 + else + nil + end + component_name ||= cmd =~ /cd (.*)/ ? $1 : nil + end + + + # We'll skip anything we can't find either a test group or comp onent name for. + # This primarily affects windows integration/functional - they're not yet available here + # (and when they are available, they must be run from a windows host) + name = test_group || component_name + next if name.nil? + + desc "Run via docker: #{step["label"].gsub(":ruby:", "ruby")}" # ruby #{rubyversion} #{name} tests on #{os}" + + task "#{name}-#{image.gsub(":", "-")}" do + docker_cfg = step["expeditor"]["executor"]["docker"] + flags = "" + if docker_cfg["privileged"] + flags << " --privileged " + end + + if docker_cfg["environment"] + flags << "-e #{docker_cfg["environment"].join(",")}" + end + sh "docker run #{flags} --volume $(pwd):/workdir --workdir /workdir rubydistros/#{image} #{flags} sh -e -c '#{step["commands"].join(" && ")}'" + end + end + end + end + create_tasks_from_expeditor_verification_pipeline +end + |