Testing 在Docker容器中运行Jenkins测试从代码库中的dockerfile生成

Testing 在Docker容器中运行Jenkins测试从代码库中的dockerfile生成,testing,jenkins,docker,automated-tests,jenkins-docker,Testing,Jenkins,Docker,Automated Tests,Jenkins Docker,我想部署一个基于Jenkins的持续集成平台。由于我有各种各样的项目(PHP/Symfony、node、angular等等),而且我希望这些测试在本地和Jenkins上运行,所以我考虑使用Dockers容器 我的目标是: 在Github/Gitlab上打开合并请求 webhook通知Jenkins合并请求 Jenkins提取repo,构建容器并运行shell脚本来执行测试 测试完成后,Jenkins从其中一个容器(通过共享卷)检索结果并处理结果 我不想让詹金斯呆在一个容器里 通过这种过程,我

我想部署一个基于Jenkins的持续集成平台。由于我有各种各样的项目(PHP/Symfony、node、angular等等),而且我希望这些测试在本地和Jenkins上运行,所以我考虑使用Dockers容器

我的目标是:

  • 在Github/Gitlab上打开合并请求
  • webhook通知Jenkins合并请求
  • Jenkins提取repo,构建容器并运行shell脚本来执行测试
  • 测试完成后,Jenkins从其中一个容器(通过共享卷)检索结果并处理结果
我不想让詹金斯呆在一个容器里

通过这种过程,我希望能够在每台开发人员机器上使用类似于
docker composer的东西轻松运行测试,然后在其中一个容器中
/tests all

我对詹金斯不太熟悉。我已经阅读了很多文档,但大多数文档都建议提前为每种项目定义Jenkins奴隶。我希望一切都是动态的,并要求尽可能少的配置詹金斯


如果您曾经实现过类似的东西,我将非常感谢您对测试过程的描述。如果你认为我的目标是不可能的,我也希望你能解释一下原因。

我建议的设置是Docker in Docker

基础是派生的Docker映像,它通过添加Docker命令行客户端来扩展映像。 Jenkins作为一个容器启动,其主文件夹(例如从Docker主机装入的/var/Jenkins_home文件夹)和Docker套接字文件能够从Jenkins构建作业启动Docker容器

docker run -d --name jenkins -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock ... <yourDerivedJenkinsImage>
如果“docker版本”输出不显示:

docker守护进程是否在此主机上运行

一切都很好

在构建作业中,您可以配置上面提到的流程。让Jenkins简单地检查一下存储库。存储库应该包含您的构建和测试脚本

使用具有shell执行的自由式生成作业。shell执行可能如下所示:

docker run --rm --volumes-from jenkins <yourImageToBuildAndTestTheProject> bash $WORKSPACE/<pathToYourProjectWithinTheGitRepository>/build.sh 
自动将工作区和配置文件添加到每个生成作业中

docker run --rm --volumes-from jenkins <yourImageToBuildAndTestTheProject> bash $WORKSPACE/<pathToYourProjectWithinTheGitRepository>/build.sh 
--volumes-from jenkins