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奴隶节点,它会容易得多。