我正在使用Docker for CI创建Jenkins测试环境。我有一个安装了Jenkins的容器,所有的作业都从我以前的Jenkins转移过来。现在我遇到了这个问题,我需要运行需要DB和PHPUnit的测试
我不想在Jenkins容器中安装这些,因为我有用于DB和PHPUnit的专用容器。所以我的问题是,我如何触发Jenkins作业来执行Docker中包含必要先决条件的测试
我有两个选择,但不确定是否可行
备选案文1:
在Jenkins中运行作业时,触发docker运行[container with all dependencies][脚本以运行测试]
但我不确定我们是否能从容器内触发docker run
备选案文2:
创建一个新容器并在其上安装Jenkins slave。将该容器添加到主Jenkins中,并在从机上运行测试。确保从属服务器具有到数据库和PHPUnit容器的链接。这可能吗
我不确定是否会回答您的问题,但在Jenkins声明性管道中https://jenkins.io/doc/book/pipeline/syntax/ 您可以轻松地运行docker容器,您可能希望在其上执行特定于技术的步骤,如
php--version
如果您的Jenkins作为Docker容器运行,您可能希望使用Docker客户端扩展此映像,从而允许连接到主机Docker并生成新的Docker容器作为Jenkins容器同级而不是子容器。
为此,您需要将docker.sock指向docker上的主机分配卷,如下所示:
docker-run-v/var/run/docker.sock:/var/run/docker.sock
您可以在本博文中找到此类解决方案的完整描述:
https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
使用php运行docker和运行php的简单管道--version如下所示
管道{
代理{docker’php’}
舞台{
阶段(‘构建’){
台阶{
sh’php–version’
}
}
}
}
这里有一个例子https://jenkins.io/doc/pipeline/tour/hello-world/
希望这有点帮助