📜  Jenkins管道

📅  最后修改于: 2021-01-04 02:52:11             🧑  作者: Mango

詹金斯管道

在詹金斯(Jenkins)中,管道是事件或作业的集合,这些事件或作业按顺序相互链接。

它是支持使用Jenkins集成和实现连续交付管道的插件的组合。

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

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

什么是连续交付管道?

在Jenkins管道中,每个作业都至少依赖一个或多个作业或事件。

上图表示Jenkins中的连续交付管道。它包含状态的集合,例如构建,部署,测试和发布。这些作业或事件相互关联。每个州都有其工作,这些工作按称为连续交付管道的顺序工作。

连续交付管道是一种自动表达,可以显示您获取用于版本控制的软件的过程。因此,您的软件中进行的每项更改都需要经过许多复杂的过程才能发布。它还涉及以可重复且可靠的方式开发软件,以及通过多个测试和部署阶段来逐步构建内置软件。

詹金斯档案

Jenkins Pipeline可以由一个名为JenkinsFile的文本文件定义。您可以使用JenkinsFile将管道实现为代码,并且可以使用DSL(特定于域的语言)来定义。借助JenkinsFile,您可以编写运行Jenkins管道所需的步骤。

使用JenkinsFile的好处是:

  • 您可以为所有分支自动建立管道,并且仅使用一个JenkinsFile即可执行拉取请求。
  • 您可以在管道上查看您的代码。
  • 您可以查看您的Jenkins管道。
  • 这是管道的唯一来源,可以由多个用户自定义。

可以使用Web UI或JenkinsFile定义JenkinsFile。

管道语法

两种语法用于定义JenkinsFile。

  • 陈述式
  • 脚本化

声明式:

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

脚本化:

脚本化的Jenkins管道语法在轻量级执行程序的帮助下在Jenkins主数据库上运行。它使用很少的资源将管道转换为原子命令。

脚本化语法和声明性语法互不相同,并且定义完全不同。

为什么使用詹金斯管道?

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

这是您应该使用Jenkins管道的原因:

  • Jenkins管道是作为代码实现的,该代码允许多个用户编辑和执行管道过程。
  • 管道功能强大。因此,如果服务器意外重启,则管道将自动恢复。
  • 您可以暂停管道过程,使其等待继续直到用户输入。
  • 詹金斯管道支持大型项目。您可以运行许多作业,甚至可以循环使用管道。

詹金斯管道概念

管道:这是用户定义的块,包含所有过程,例如构建,测试,部署等。它是JenkinsFile中所有阶段的集合。在此块中定义了所有阶段和步骤。它用于声明性管道语法。

pipeline{
}

节点:节点是运行Jenkins的机器,称为节点。脚本块管线语法中使用了节点块。

node{
}

阶段:此块包含管道中的一系列步骤。即,构建,测试和部署过程全部都集中在一个阶段中。通常,一个阶段块可视化詹金斯管道流程。

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

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