Jenkins 流水线
在Jenkins中,流水线是一系列按顺序相互关联的事件或作业的集合。
它是使用Jenkins支持集成和实现 持续交付流水线 的插件组合。
换句话说,Jenkins流水线是一组作业或事件,通过使用自动化工具将软件从版本控制带到最终用户手中。它用于将持续交付纳入我们的软件开发工作流中。
流水线有一个可扩展的自动化服务器,可以通过DSL(特定领域语言)以”代码”的形式创建简单甚至复杂的交付流水线。
什么是持续交付流水线
在Jenkins流水线中,每个作业都对至少一个或多个作业或事件有一定的依赖关系。
上图代表了Jenkins中的一个持续交付流水线。它包括构建、部署、测试和发布等各种状态。这些工作或事件都彼此相互关联。每个状态都有它自己的工作,按照一个连续的交付流水线进行工作。
持续交付流水线是一个自动化表达,显示了您获取软件版本控制的过程。因此,您对软件所做的每一次更改都会经历许多复杂的过程才能发布。它还包括以可重复和可靠的方式开发软件,并将构建的软件推进到多个测试和部署阶段。
Jenkins文件
Jenkins Pipeline可以通过名为Jenkins文件的文本文件来定义。您可以使用Jenkins文件来实现管道作为代码,并使用DSL(特定领域语言)来定义。通过Jenkins文件,您可以编写运行Jenkins Pipeline所需的步骤。
使用Jenkins文件的好处包括:
- 您可以为所有分支自动创建管道,并且可以使用一个Jenkins文件执行拉取请求。
- 您可以在管道上审查您的代码。
- 您可以审查您的Jenkins管道。
- 这是您的管道的唯一来源,可以由多个用户进行自定义。
可以使用Web UI或Jenkins文件来定义Jenkins文件。
管道语法
两种语法用于定义您的Jenkins文件。
- 声明式
- 脚本化
声明式:
声明式管道语法提供了一种简单的方式来创建管道。它由一个预定义的层次结构组成,用于创建Jenkins管道。它以简单明了的方式提供了控制管道执行的能力。
脚本化:
脚本化的Jenkins管道语法在Jenkins主节点上运行,借助轻量级执行器来使用非常少的资源将管道转换为原子命令。
脚本化和声明式语法在语法上有所不同,完全不同。
为什么使用Jenkins管道
Jenkins是一个连续集成服务器,能够支持软件开发过程的自动化。您可以使用用例创建多个自动化作业,并将它们作为Jenkins管道运行。
以下是使用Jenkins管道的原因:
- Jenkins管道被实现为代码,允许多个用户编辑和执行管道过程。
- 管道是健壮的。因此,如果您的服务器发生了意外重启,管道将自动恢复。
- 您可以暂停管道过程,并在等待用户输入时继续执行。
- Jenkins管道支持大型项目。您可以运行许多作业,甚至在循环中使用管道。
Jenkins管道概念
管道: 这是用户定义的块,其中包含构建、测试、部署等所有过程。它是Jenkins文件中所有阶段的组合。所有阶段和步骤都在这个块中定义。它在声明式的管道语法中使用。
pipeline{
}
节点: Jenkins运行在的机器被称为节点。节点块在脚本化流水线语法中使用。
node{
}
阶段: 该块包含了一个流水线中的一系列步骤,例如构建、测试和部署过程都在一个阶段中汇聚。通常,一个阶段块可以可视化Jenkins流水线的过程。
让我们看一个具有多个阶段的示例,其中每个阶段执行一个特定的任务:
pipeline {
agent any
stages {
stage ('Build') {
...
}
stage ('Test') {
...
}
stage ('QA') {
...
}
stage ('Deploy') {
...
}
stage ('Monitor') {
...
}
}
}
步骤: 步骤是在定义的时间内执行特定流程的单个任务。管道涉及在一个阶段块内定义的一系列步骤。
pipeline {
agent any
stages {
stage ('Build') {
steps {
echo 'Running build phase...'
}
}
}
}