我怎样才能用serverspectestingJenkins在jenkins docker容器中运行?

我试图certificate,jenkins运行在从官方docker中心jenkins形象build造的容器。

require "serverspec" require "docker" describe "Dockerfile" do before(:all) do image = Docker::Image.build_from_dir('./images/jenkins') set :os, family: :debian set :backend, :docker set :docker_image, image.id end describe process("java") do it { should be_running } end end 

我得到以下结果:

 Failures: 1) Dockerfile Process "java" should be running Failure/Error: it { should be_running } expected Process "java" to be running # ./spec_jenkins.rb:24:in `block (3 levels) in <top (required)>' 

我误解testing运行在一个容器实例从构build的图像?

Jenkins官方图片定义了一个ENTRYPOINT而不是一个CMD

但是, specinfra查找CMD ,如果找不到,则使用/bin/sh

IOW,specinfra不运行jenkins。 我的testing失败的原因。

通过指定适当的docker_container_create_optionsspecinfra也启动Jenkins并通过testing。

工作代码:

 require "serverspec" require "docker" describe "Dockerfile" do before(:all) do image = Docker::Image.build_from_dir('./images/jenkins') set :os, family: :debian set :backend, :docker set :docker_image, image.id set :docker_container_create_options, {'Cmd' => ['/usr/local/bin/jenkins.sh']} end describe process("java") do it { should be_running } end end