Jenkins 管道

17 Mar 2025 | 4 分钟阅读

在 Jenkins 中,流水线是按顺序相互连接的一系列事件或作业。

它是由插件组成的,这些插件支持使用 Jenkins 集成和实现持续交付流水线

换句话说,Jenkins 流水线是一系列作业或事件,它通过使用自动化工具将软件从版本控制传递到最终用户手中。 它用于将持续交付纳入我们的软件开发工作流程中。

流水线具有可扩展的自动化服务器,可以通过 DSL(领域特定语言)“作为代码”创建简单甚至复杂的交付流水线。

什么是持续交付流水线?

在 Jenkins 流水线中,每个作业都至少依赖于一个或多个作业或事件。

Jenkins Pipeline

上图表示 Jenkins 中的持续交付流水线。 它包含构建、部署、测试和发布等一系列状态。 这些作业或事件彼此互连。 每个状态都有自己的作业,这些作业按顺序工作,称为持续交付流水线。

持续交付流水线是一种自动化的表达方式,用于展示您从版本控制获取软件的过程。 因此,您软件中的每一个更改都会经过许多复杂的流程,最终才能发布。 它还包括以可重复和可靠的方式开发软件,以及构建的软件通过多个测试和部署阶段的进展。

JenkinsFile

Jenkins 流水线可以通过名为 JenkinsFile 的文本文件来定义。 您可以使用 JenkinsFile 实现流水线即代码,并且可以通过使用 DSL(领域特定语言)来定义它。 借助 JenkinsFile,您可以编写运行 Jenkins 流水线所需的步骤。

使用 JenkinsFile 的好处是

  • 您可以使用一个 JenkinsFile 为所有分支自动创建流水线,并可以执行拉取请求。
  • 您可以审查流水线上的代码。
  • 您可以审查您的 Jenkins 流水线。
  • 这是您的流水线的唯一来源,可以由多个用户自定义。

JenkinsFile 可以通过 Web UI 或 JenkinsFile 定义。

流水线语法

有两种类型的语法用于定义您的 JenkinsFile。

  • 声明式
  • 脚本式

声明式

声明式流水线语法提供了一种创建流水线的简单方法。 它由预定义的层次结构组成,用于创建 Jenkins 流水线。 它为您提供以简单、直接的方式控制流水线执行的所有方面的能力。

脚本式

脚本式 Jenkins 流水线语法借助轻量级执行器在 Jenkins master 上运行。 它使用非常少的资源将流水线转换为原子命令。

脚本式和声明式语法彼此不同,并且以完全不同的方式定义。

为什么要使用 Jenkins 流水线?

Jenkins 是一个持续集成服务器,能够支持软件开发过程的自动化。 您可以在用例的帮助下创建多个自动化作业,并将它们作为 Jenkins 流水线运行。

以下是您应该使用 Jenkins 流水线的原因

  • Jenkins 流水线是作为代码实现的,这允许多个用户编辑和执行流水线过程。
  • 流水线是健壮的。 因此,如果您的服务器经历了一次无法预测的重启,流水线将自动恢复。
  • 您可以暂停流水线过程,并使其等待继续,直到收到用户的输入。
  • Jenkins 流水线支持大型项目。 您可以运行许多作业,甚至可以在循环中使用流水线。

Jenkins 流水线概念

流水线: 这是用户定义的块,其中包含所有过程,例如构建、测试、部署等。它是 JenkinsFile 中所有阶段的集合。 所有阶段和步骤都在此块中定义。 它在声明式流水线语法中使用。

节点: Jenkins 运行的机器称为节点。 节点块在脚本式流水线语法中使用。

阶段: 此块包含流水线中的一系列步骤。 即,构建、测试和部署过程都集中在一个阶段中。 通常,阶段块可视化 Jenkins 流水线过程。

让我们看一个多阶段的例子,其中每个阶段执行一个特定的任务

步骤: 步骤是一个在定义的时间执行特定过程的单个任务。 流水线涉及在阶段块内定义的一系列步骤。