概述
Jenkins 是一个用于跨平台交付项目的开源 CI/CD 自动化工具。在本教程中,我们将学习如何在两台不同的机器之间导出和导入 Jenkins 工作流。
首先,我们将在 Docker 容器中启动 Jenkins 服务器。之后,我们将使用 Job Import 插件 和 Jenkins XML 配置从源机器将工作流导出到目标机器。
初始设置
在开始之前,请先创建用于演示的设置。这里包括两台 Linux 虚拟机,一台源机器和一台目标机器。通常,在 Linux 上安装 Jenkins 的方式有很多,但最简单的方法是使用 Docker 容器。当然,两个机器上都需要运行 Jenkins 服务器。
此外,我们需要一个示例工作流来进行导出和导入。为了创建一个工作流,我们需要遵循以下步骤:
- 在 Jenkins 控制台中点击 New Item
- 设置工作流名称(我们使用 sampleJob)
- 选择工作流类型(我们使用 Freestyle project)
- 保存工作流
以上步骤将在源 Jenkins 机器上创建基本的工作流。
导出/导入 Jenkins 工作流
无论如何,Jenkins 工作流可以在不同的服务器之间以多种方式移动。然而,为了将 Jenkins 工作文件从一个实例迁移到另一个实例,我们需要确保源和目标机器之间的适当连接。
3.1 使用 Job Import 插件
在 Jenkins 中,Job Import 插件允许我们迁移工作流。实际上,所有插件都可以通过 Jenkins UI 进行管理和安装。当然,我们需要在目标机器上安装 Job Import 插件。
现在,为了导入工作流,我们需要对目标 Jenkins 机器的配置进行更改。首先,从 Jenkins 控制面板导航到 Manage Jenkins > Configure System。接下来,滚动到底部的 Job Import 插件 部分。
在这里,我们将添加源 Jenkins 机器的 URL 和凭据。
在这里,我们填写所有相关值,然后保存并应用更改。
最后,我们会在 Jenkins 控制面板的左侧导航栏中看到 Job Import 插件 项目。点击它,我们可以看到插件提供的选项。
从那时起,我们可以通过点击 查询 按钮获取源机器的所有工作流。此外,当我们使用 导入 选项时,源机器的工作流会导入到目标机器。
3.2 使用 jenkins-cli.jar 文件
此外,我们还可以使用 jenkins-cli.jar 文件迁移 Jenkins 工作流。要下载 jenkins-cli.jar,可以前往 [JENKINS_IP]:[JENKINS_PORT]/jnlpJars/jenkins-cli.jar。
此外,为了从源机器导出工作流,我们需要源机器 Jenkins 用户的密码。这个密码在 Docker 容器的 stdout 日志中。
让我们现在看看从源机器获取 sampleJob 配置文件的命令:
$ java -jar jenkins-cli.jar -s http://JENKINS_USER:JENKINS_PASSWORD@JENKINS_IP:JENKINS_PORT get-job sampleJob > sampleJob.xml
这里有一些我们需要用源机器的适当值更新的信息:
- JENKINS_USER
- JENKINS_PASSWORD
- JENKINS_IP
- JENKINS_PORT
重要的是,我们必须在 jenkins-cli.jar 所在的目录中运行此命令。此外,使用 get-job 选项,我们可以将工作流导出为 XML 格式。
让我们检查将 sampleJob.xml 导入到目标机器的命令:
$ java -jar jenkins-cli.jar -s http://JENKINS_USER:JENKINS_PASSWORD@JENKINS_IP:JENKINS_PORT create-job sampleJob < sampleJob.xml
这次,值需要替换,但这次根据目标机器。
最后,上述命令读取 sampleJob.xml 文件并在目标机器上导入新工作流。
结论
在本文中,我们展示了如何在不同 Jenkins 服务器之间导出和导入 Jenkins 工作流。首先,我们学习了如何使用 Job Import 插件进行导出和导入。之后,我们使用 jenkins-cli.jar 文件进行了同样的操作。