运行 Jenkins 主从 Docker

Run Jenkins master and slave with Docker

我想使用 Docker 在服务器 A 上设置 Jenkins master,在服务器 B 上设置 slave。

两台服务器都是Jenkins专用的虚拟机。

目前我已经在服务器 A 上为 master 启动了 Docker 容器,基于官方 Jenkins docker 图片。但是我应该为 Jenkins slave 使用什么 docker 图像?

这实际上取决于您在构建环境中需要的环境和工具。例如,如果您构建一个 C 项目,您将需要一个包含 C 编译器的映像,如果您使用 Makefile,则可能需要 make。如果您构建一个 Java 项目,您将需要一个带有 Java 编译器的 JDK,如果您将它们用作构建的一部分,则可能需要 Ant / Maven / Gradle。

您可以使用 evarga/jenkins-slave 作为构建从属的良好起点。

此图像已包含 JDK。如果您只需要 JDK 和 Maven 在您的构建奴隶上,您可以使用以下 Dockerfile:

构建您的 Docker 图像
FROM evarga/jenkins-slave

run apt-get install maven

使用 Docker 图像构建从属实际上是个好主意。部分原因出现在Templating Jenkins Build Environments with Docker Containers:

Docker has established itself as a popular and convenient way to bootstrap isolated and reproducible environments, which enables Docker containers to be the most maintainable slave environments. Docker containers’ tooling and other configurations can be version controlled in an environment definition called a Dockerfile, and Dockerfiles allows multiple identical containers can be created quickly using this definition or for more customized off-shoots to be created by using that Dockerfile’s image as a base.

我建议您尝试使用动态|临时 docker 节点,而不是手动创建节点并通过 ssh 连接到它们。看看 https://engineering.riotgames.com/news/putting-jenkins-docker-container,它非常强大,我认为它是 Docker.

的杀手级用例之一