我想使用 Docker在服务器A上设置 Jenkins 主服务器,在服务器B上设置从服务器。
两台服务器都是 Jenkins 专用的虚拟机。
目前我已经在服务器A上为master启动了 Docker 容器,基于官方的Jenkins docker 镜像。但是我应该为 Jenkins slave使用什么 docker 镜像?
我想使用 Docker在服务器A上设置 Jenkins 主服务器,在服务器B上设置从服务器。
两台服务器都是 Jenkins 专用的虚拟机。
目前我已经在服务器A上为master启动了 Docker 容器,基于官方的Jenkins docker 镜像。但是我应该为 Jenkins slave使用什么 docker 镜像?
这实际上取决于您在构建环境中需要的环境和工具。例如,如果您构建一个 C 项目,则可能需要包含 C 编译器的映像,并且可能make
需要使用 Makefile。如果您构建一个 Java 项目,您将需要一个带有 Java 编译器的 JDK,如果您将它们用作构建的一部分,可能还需要 Ant / Maven / Gradle。
您可以使用evarga/jenkins-slave作为构建从站的良好起点。
此映像已包含 JDK。如果您只是在构建从属设备上需要 JDK 和 Maven,您可以使用以下内容构建您的 Docker 映像Dockerfile
:
FROM evarga/jenkins-slave
run apt-get install maven
使用 Docker 镜像构建 slave 实际上是一个好主意。一些原因出现在使用 Docker Containers 模板化 Jenkins 构建环境中:
Docker 已将自己确立为一种流行且方便的方式来引导隔离和可重现的环境,这使 Docker 容器成为最可维护的从属环境。Docker 容器的工具和其他配置可以在称为 Dockerfile 的环境定义中进行版本控制,并且 Dockerfiles 允许使用此定义快速创建多个相同的容器,或者使用该 Dockerfile 的图像作为基础来创建更多自定义的分支.
我建议您尝试使用动态|临时 docker 节点,而不是手动创建节点并通过 ssh 连接到它们。看看https://engineering.riotgames.com/news/putting-jenkins-docker-container,它非常强大,我认为它是 Docker 的杀手级用例之一。