我怎样才能用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_options
, specinfra
也启动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