概述

Jenkins 是一个用于跨平台交付项目的开源 CI/CD 自动化工具。在本教程中,我们将学习如何在两台不同的机器之间导出和导入 Jenkins 工作流。

首先,我们将在 Docker 容器中启动 Jenkins 服务器。之后,我们将使用 Job Import 插件 和 Jenkins XML 配置从源机器将工作流导出到目标机器。

初始设置

在开始之前,请先创建用于演示的设置。这里包括两台 Linux 虚拟机,一台源机器和一台目标机器。通常,在 Linux 上安装 Jenkins 的方式有很多,但最简单的方法是使用 Docker 容器。当然,两个机器上都需要运行 Jenkins 服务器。

此外,我们需要一个示例工作流来进行导出和导入。为了创建一个工作流,我们需要遵循以下步骤:

  1. 在 Jenkins 控制台中点击 New Item
  2. 设置工作流名称(我们使用 sampleJob
  3. 选择工作流类型(我们使用 Freestyle project
  4. 保存工作流

以上步骤将在源 Jenkins 机器上创建基本的工作流。

导出/导入 Jenkins 工作流

无论如何,Jenkins 工作流可以在不同的服务器之间以多种方式移动。然而,为了将 Jenkins 工作文件从一个实例迁移到另一个实例,我们需要确保源和目标机器之间的适当连接

3.1 使用 Job Import 插件

在 Jenkins 中,Job Import 插件允许我们迁移工作流。实际上,所有插件都可以通过 Jenkins UI 进行管理和安装。当然,我们需要在目标机器上安装 Job Import 插件。

现在,为了导入工作流,我们需要对目标 Jenkins 机器的配置进行更改。首先,从 Jenkins 控制面板导航到 Manage Jenkins > Configure System。接下来,滚动到底部的 Job Import 插件 部分。

Job Import 插件

在这里,我们将添加源 Jenkins 机器的 URL 和凭据。
Jenkins 机器 在这里,我们填写所有相关值,然后保存并应用更改。

最后,我们会在 Jenkins 控制面板的左侧导航栏中看到 Job Import 插件 项目。点击它,我们可以看到插件提供的选项。

Jenkins 控制面板

从那时起,我们可以通过点击 查询 按钮获取源机器的所有工作流。此外,当我们使用 导入 选项时,源机器的工作流会导入到目标机器。

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 文件进行了同样的操作。


« 上一篇: Jenkins 定时任务