Jenkins Pipeline 教程:如何创建 JenkinsFile(示例)
什么是 Jenkins Pipeline?
Jenkins Pipeline 是一个插件组合,支持持续交付管道的集成和实现。它拥有一个可扩展的自动化服务器,可以通过 Pipeline DSL 以代码形式创建简单和复杂的交付管道。Pipeline 是相互链接的一系列事件。
什么是持续交付管道?它是如何工作的?
在 Jenkins Pipeline 中,每个作业或事件都至少有一个或多个事件的依赖关系。

上图展示了 Jenkins 中的持续交付管道。它包含一组称为构建、部署、测试和发布的阶段。这些事件是相互链接的。每个阶段都有其事件,这些事件以称为持续交付管道的序列运行。
持续交付管道是一种自动化表达式,用于展示从版本控制获取软件的过程。因此,软件中的每个更改在其发布过程中都会经历一系列复杂的流程。它还涉及以可靠且可重复的方式开发软件,以及通过多个 测试 和部署阶段来推进构建的软件。
什么是 JenkinsFile?
Jenkins Pipeline 可以使用一个名为 **JenkinsFile** 的文本文件来定义。您可以使用 JenkinsFile 实现 Pipeline 即代码,并且可以使用领域特定语言(DSL)来定义它。使用 JenkinsFile,您可以编写运行 Jenkins Pipeline 所需的步骤。
使用 **JenkinsFile** 的好处是:
- 您可以使用一个 **JenkinsFile** 为所有分支自动创建管道,并执行拉取请求。
- 您可以在 Pipeline 中审查您的 Jenkins 代码
- 您可以审计您的 Jenkins Pipeline
- 这是您 Pipeline 的唯一来源,可以由多个用户修改。
JenkinsFile 可以通过 Web UI 或 Jenkins 文件来定义。
声明式与脚本式 Pipeline 语法
定义 JenkinsFile 有两种 Jenkins Pipeline 语法:
- 声明式
- 脚本式
声明式
声明式 Pipeline 语法提供了一种创建 Pipeline 的简单方法。它包含一个预定义的层次结构来创建 Jenkins Pipeline。它使您能够以简单、直接的方式控制 Pipeline 执行的所有方面。
脚本式
脚本式 Jenkins Pipeline 通过轻量级执行器在 Jenkins 主节点上运行。它使用很少的资源将 Pipeline 转换为原子命令。声明式和脚本式语法在定义上完全不同。
为什么使用 Jenkins Pipeline?
Jenkins 是一个开源的 持续集成服务器,能够支持软件开发流程的自动化。您可以使用用例创建多个自动化作业,并将它们作为 Jenkins Pipeline 运行。
以下是您应该使用 Jenkins Pipeline 的原因:
- Jenkins Pipeline 以代码形式实现,允许多个用户编辑和执行 Pipeline 流程。
- Pipeline 是健壮的。因此,如果您的服务器意外重启,Pipeline 将自动恢复。
- 您可以暂停 Pipeline 流程,并使其等待用户输入后恢复。
- Jenkins Pipeline 支持大型项目。您可以运行多个作业,甚至可以在循环中使用 Pipeline。
Jenkins Pipeline 概念
术语 | 描述 |
---|---|
管道 | Pipeline 是一组以代码形式提供的用于持续交付的指令,包含整个构建过程所需的指令。通过 Pipeline,您可以构建、测试和交付应用程序。 |
节点 | Jenkins 运行的机器称为节点。节点块主要用于脚本式 Pipeline 语法。 |
Stage | Stage 块包含 Pipeline 中的一系列步骤。也就是说,构建、测试和部署过程都集成在一个 Stage 中。通常,Stage 块用于可视化 Jenkins Pipeline 过程。 |
步骤 | Step 就是执行特定过程的单个任务。Pipeline 包含一系列 Step。 |
在 Jenkins 中安装 Build Pipeline 插件
通过 **Build Pipeline** 插件,您可以创建进出作业的 Pipeline 视图,并创建需要手动干预的触发器。
以下是在 Jenkins 中安装 **Build Pipeline** 插件的方法:
步骤 1)插件的设置可以在以下位置找到:
Manage Jenkins > Manage Plugins。
如果您已安装插件,它会显示在已安装的选项卡下。
步骤 2)如果您之前没有安装该插件,
它会显示在 **Available** 选项卡下。
成功在 Jenkins 中安装 **Build Pipeline** 插件后,请按照以下步骤创建您的 Jenkins Pipeline:
如何创建 Jenkins Pipeline
登录您的 Jenkins 仪表板后
步骤 1)点击 Jenkins 仪表板左侧的 **“+”** 按钮创建 Pipeline。
步骤 2)
- 系统会要求您为 Pipeline 视图命名。在此演示中,我们将它命名为“Guru99 Pipeline”。
- 在 **options** 下选择 **Build a pipeline view**
- 点击 **OK**
步骤 3)在下一页,系统会要求您提供更多配置 Jenkins Pipeline 的详细信息。只需接受默认设置,并确保选择设置下的第一个作业。
点击 **Apply**,然后点击 **OK**。
这将显示您项目的示例 Pipeline 视图,如下所示:
运行 Pipeline 构建
步骤 1)要运行 Pipeline 构建,您需要先链接您的作业。为此,请转到您的第一个作业并点击配置。
步骤 2)现在,在 **Build Triggers** 下,选中 **Build after other projects are built** 选项。
这样,您所有作业的链接就创建好了。
步骤 3)安装 **Build Pipeline view** 插件(如果您尚未安装)。
步骤 4)转到您的 Jenkins 仪表板,然后点击“+”按钮创建视图。选择 **Build Pipeline View** 选项,然后点击 **OK**。
步骤 5)在 **Pipeline view configuration** 下,找到 **Pipeline Flow**。
在 **Pipeline flow** 下,选择要运行的初始作业。然后选择已链接到其他作业的作业,如 **步骤 1** 和 **步骤 2** 所示。
在这里,我们选择了 **Guru99 Project 1** 作为初始作业,并链接了其他作业。因此,作业将一个接一个地在 Pipeline 中运行。
当 Jenkins Pipeline 运行时,您可以通过红色和绿色的状态符号检查其状态。红色表示 Pipeline 失败,绿色表示成功。
在此 Jenkins Pipeline 示例中,我们看到按钮是绿色的。因此,Pipeline 成功了。
运行 Jenkins Pipeline
点击 **Run** 来运行 Jenkins Pipeline。它看起来会像这样:
Jenkins Pipeline 脚本示例中的 “helloworld.java” 程序,但在实际项目中,您将负责在 Jenkins 中创建和构建复杂的 Pipeline。有关 Pipeline 视图的示例,请参见下文。
使用 Jenkins Pipeline 的最佳实践
- 使用真正的 Jenkins Pipeline
- 将 Pipeline 作为代码进行开发
- Pipeline 中的任何非设置工作都应在 Stage 块中进行。
- Pipeline 中的任何实际工作都必须在 Node 块中进行。
- 不要在 Node 块中使用 Input。
- 切勿使用 env 全局变量设置环境变量
- 将您的 Input 包装在 timeout 中