Jenkins 流水线

Jenkins 流水线

在Jenkins中,流水线是一系列按顺序相互关联的事件或作业的集合。

它是使用Jenkins支持集成和实现 持续交付流水线 的插件组合。

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

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

什么是持续交付流水线

在Jenkins流水线中,每个作业都对至少一个或多个作业或事件有一定的依赖关系。

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...'
                }
            }
    }
}

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程