管道

本章涵盖了Jenkins Pipeline功能的所有推荐方面,包括如何:必威国际有限公司

有关Jenkins用户手册中内容的概述,请参见必威国际有限公司用户手册概述

什么是Jenki必威国际有限公司ns Pipeline?

必威国际有限公司Jenkins Pipeline(简称“Pipeline”,缩写为P)是一套支持实现和集成的插件持续交付管道詹金斯。必威国际有限公司

一个连续输送(CD)管道是将软件从版本控制直接传递给用户和客户的过程的自动表达。软件的每一个变更(在源代码控制中提交)在发布的过程中都要经过一个复杂的过程。这个过程包括以可靠和可重复的方式构建软件,以及通过多个测试和部署阶段来推进构建的软件(称为“构建”)。

Pipeline提供了一组可扩展的工具,用于将简单到复杂的交付管道建模为通过管道领域特定语言(DSL)语法1

Jenkins Pipeline的定义被必威国际有限公司写入一个文本文件(称为必威国际有限公司Jenkinsfile),然后可以提交到项目的源代码控制存储库。2这是“管道即代码”的基础;将CD管道作为应用程序的一部分进行版本控制和审查,就像其他代码一样。

创建一个必威国际有限公司Jenkinsfile并且将其投入到源代码控制中会带来许多直接的好处:

  • 自动为所有分支和pull请求创建一个Pipeline构建流程。

  • 对Pipeline的代码审查/迭代(以及剩余的源代码)。

  • 管道的审计跟踪。

  • 单一的真相来源3.管道,它可以被项目的多个成员查看和编辑。

而定义管道的语法,无论是在web UI中还是与必威国际有限公司Jenkinsfile是一样的,它通常被认为是在一个必威国际有限公司Jenkinsfile然后把它检查到源代码管理。

声明式和脚本式管道语法

一个必威国际有限公司Jenkinsfile可以使用两种类型的语法编写——声明式和脚本式。

声明式管道和脚本管道的构造方式完全不同。声明式管道是Jenkins管道最近的一个特性,它:必威国际有限公司

  • 提供了比脚本管道语法更丰富的语法特性

  • 旨在使编写和读取Pipeline代码更容易。

许多单独的语法成分(或“步骤”)写进一个必威国际有限公司Jenkinsfile,但是,对于声明式管道和脚本管道都是常见的。阅读更多关于这两种语法的不同之处管道的概念而且管道语法概述在下面。

为什么管道?

必威国际有限公司从根本上说,Jenkins是一个支持许多自动化模式的自动化引擎。Pipeline为Jenkins添加了一套强大的自动化工具,支持从简单的持续集成到全面的CD管道的用例。必威国际有限公司通过对一系列相关任务进行建模,用户可以利用Pipeline的许多特性:

  • 代码管道在代码中实现,通常检入到源代码控制中,使团队能够编辑、审查和迭代他们的交付管道。

  • 耐用:管道可以在Jenkins控制器计划内和计划外重启后继续运行。必威国际有限公司

  • Pausable:在继续运行Pipeline之前,管道可以选择停止并等待人工输入或审批。

  • 多才多艺的:管道支持复杂的实际CD需求,包括分叉/连接、循环和并行执行工作的能力。

  • 可扩展的: Pipeline插件支持对其DSL的自定义扩展1和多种选项的集成与其他插件。

虽然詹金斯一必威国际有限公司直允许以基本形式将Freestyle Jobs链接在一起执行顺序任务,4Pipeline让这个概念成为Jenkins的一等公民。必威国际有限公司

《Jenkins》中的Freestyle和Pipeline有什么区别必威国际有限公司

基于Jenkins可扩展性的核心价值,Pi必威国际有限公司peline也具有可扩展性管道共享库和由插件开发者。5

下面的流程图是在Jenkins Pipeline中容易建模的一个CD场景的示例:必威国际有限公司

管道流

管道的概念

以下概念是Jenkins Pipeline的关键方面,它们与Pipeline语法密切必威国际有限公司相关(参见概述下文)。

管道

管道是CD管道的用户定义模型。Pipeline的代码定义了整个构建过程,通常包括构建应用程序、测试应用程序和交付应用程序的阶段。

同样,一个管道块是一个声明式管道语法的关键部分

节点

节点是一台机器,它是Jenkins环境的一部分,能够执行管道。必威国际有限公司

同样,一个节点块是一个脚本管道语法的关键部分

阶段

一个阶段块定义了通过整个流水线执行的任务的一个概念上不同的子集(例如:“构建”、“测试”和“部署”阶段),许多插件使用它来可视化或呈现Jenkins Pipeline的状态/进度。必威国际有限公司6

一步

一个单一的任务。从根本上说,一步告诉了詹金斯必威国际有限公司什么在某一特定时间点(或过程中的“步骤”)进行。例如,执行shell命令使使用上海步骤:sh '让'.当一个插件扩展管道DSL时,1这通常意味着插件实现了一个新的一步

管道语法概述

下面的Pipeline代码框架说明了两者之间的基本区别声明式管道语法而且脚本化管道语法

要注意阶段而且步骤(上面)是声明式管道语法和脚本式管道语法的共同元素。

声明式管道基础

在声明性管道语法中,管道block定义了整个Pipeline中所做的所有工作。

必威国际有限公司Jenkinsfile(声明式管道)
管道{代理任何(1)阶段{阶段(构建) {(2){步骤//(3)}}阶段(测试) {(4){步骤//(5)}}阶段(部署) {(6){步骤//(7)} } } }
1 在任何可用代理上执行此Pipeline或其任何阶段。
2 定义“构建”阶段。
3. 执行一些与“构建”阶段相关的步骤。
4 定义“测试”阶段。
5 执行一些与“Test”阶段相关的步骤。
6 定义“部署”阶段。
7 执行一些与“Deploy”阶段相关的步骤。

脚本化管道基础

在脚本管道语法中,一个或多个节点block在整个Pipeline中执行核心工作。尽管这不是脚本化管道语法的强制要求,但将你的管道工作限制在节点Block做了两件事:

  1. 通过向Jenkins队列添加一个项目来调度块中包含的步骤运行。必威国际有限公司只要节点上的执行程序空闲,这些步骤就会运行。

  2. 创建一个工作区(一个特定于该Pipeline的目录),可以在其中对从源代码控制中签出的文件进行处理。
    警告:根据您的Jenkins配置,一些工作必威国际有限公司空间在一段时间不活动后可能不会自动清理。查看门票和讨论链接必威国际有限公司詹金斯- 2111为更多的信息。

必威国际有限公司Jenkinsfile(照本宣科的管道)
节点{(1)阶段(构建) {(2)//(3)}阶段(测试) {(4)//(5)}阶段(部署) {(6)//(7)}}
1 在任何可用代理上执行此Pipeline或其任何阶段。
2 定义“构建”阶段。阶段块在脚本管道语法中是可选的。然而,实现阶段Scripted Pipeline中的block提供了Jenkins UI中每个阶段的任务/步骤子集的更清晰的可视化。必威国际有限公司
3. 执行一些与“构建”阶段相关的步骤。
4 定义“测试”阶段。
5 执行一些与“Test”阶段相关的步骤。
6 定义“部署”阶段。
7 执行一些与“Deploy”阶段相关的步骤。

管道的例子

这里有一个例子必威国际有限公司Jenkinsfile使用声明式管道语法——可以通过单击切换脚本管道下面的链接:

必威国际有限公司Jenkinsfile(声明式管道)
管道{(1)代理任何(2)skipstagesafter不稳定()}阶段{阶段()构建) {(3){步骤(4)上海使(5)}}阶段(测试){步骤做检查junit/ * * / * . xml报告(6)}}阶段(部署){步骤让发布} } } }
1 管道是特定于声明式管道的语法,它定义了一个包含执行整个管道的所有内容和指令的“块”。
2 代理是特定于声明式管道的语法,它指示Jenkins为整个管道分配执行器(在节点上)和工作空间。必威国际有限公司
3. 阶段语法块描述的是管道阶段.阅读更多关于阶段的声明性管道语法中的块管道的语法页面。正如前面提到的以上阶段块在脚本管道语法中是可选的。
4 步骤是特定于声明式管道的语法来描述在此运行的步骤吗阶段
5 上海是一个管道一步(提供的管道:节点和进程插件)来执行给定的shell命令。
6 junit是另一个管道一步(提供的JUnit插件),以聚合测试报告。
7 上海是一个管道一步(提供的管道:节点和进程插件)来执行给定的shell命令。

关于管道语法的更多信息管道的语法页面。


4.额外的插件已经被用来实现复杂的行为利用自由式工作,如复制工件,参数化触发器,和促进构建插件


这个页面有用吗?

请通过此页面提交您的反馈快速形成

或者,如果您不希望填写快速表格,您可以简单地指出,您认为这一页是否有用?


看到现有的反馈在这里

Baidu