jenkins使用docker:如何运行testing?

我正在使用docker for CI创build一个jenkinstesting环境。 我有一个安装了jenkins的容器,所有的工作都从我以前的jenkins移走。 现在我坚持这个问题,我需要运行需要数据库和PHP单元的testing。

我不想将这些安装在我的jenkins容器中,因为我有专门的DB,phpunit容器。 所以我的问题是我怎样才能触发jenkins的工作,在docker执行testing包含必要的先决条件。

我有两个select,但不知道是否可行,

选项1:

当你在jenkins中运行作业时,触发docker 运行[所有依赖的容器] [运行testing的脚本]但是我们不确定是否可以从容器内部触发docker run?

选项2:

创build一个新的容器,然后安装jenkins slave。 在主jenkins中添加该容器并在从站上运行testing。 确保从站链接到数据库和PHP单元容器。 这可能吗?

谢谢

我不确定我会回答你的问题,但在jenkins声明pipe道https://jenkins.io/doc/book/pipeline/syntax/你可以很容易地运行docker容器,您可能要执行您的技术特定步骤

php --version

如果您的Jenkins作为Docker容器运行,您可能需要使用Docker客户端来扩展此映像,并允许连接到主机Docker,并将新的Docker容器产生为Jenkins容器兄弟不是孩子。 为此,您需要将docker.sock指向主机:

 docker run -v /var/run/docker.sock:/var/run/docker.sock 

您可能会在以下博客文章中find有关此类解决scheme的完整说明: https : //jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/

简单的pipe道运行docker与PHP和运行php --version看起来像这样。

 pipeline { agent { docker 'php' } stages { stage('build') { steps { sh 'php --version' } } } } 

在此处find示例https://jenkins.io/doc/pipeline/tour/hello-world/

希望有点帮助。

build议去选项2

使用jenkins作业触发器在jenkins从节点而不是jenkins容器中运行作业。

并使用jenkinsdocker插件来pipe理你的docker容器,这是DB,phpunit,把它们当作jenkins奴隶节点,它会容易得多。