管道

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

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

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

必威国际有限公司Jenkins Pipeline是一套支持实现和集成的插件持续交付管道詹金斯。必威国际有限公司

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

管道提供了一组可扩展的工具,通过“代码”对简单到复杂的交付管道进行建模管道领域特定语言(DSL)语法1

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

创建一个必威国际有限公司Jenkinsfile把它投入到源代码控制中会带来一些直接的好处:

  • 自动为所有分支和拉取请求创建一个管道构建过程。

  • 管道上的代码审查/迭代(以及剩余的源代码)。

  • 管道的审计跟踪。

  • 单一真理来源3.,可以由项目的多个成员查看和编辑。

而定义管道的语法,无论是在web UI或与必威国际有限公司Jenkinsfile是一样的,一般认为在必威国际有限公司Jenkinsfile然后把它提交给源代码控制。

声明式和脚本化的管道语法

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

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

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

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

许多单独的语法成分(或“步骤”)写进必威国际有限公司Jenkinsfile,但是,对于声明式管道和脚本式管道都是通用的。阅读更多关于这两种语法的区别管道的概念管道语法概述在下面。

为什么管道?

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

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

  • 耐用:管道可以在Jenkins控制器的计划和计划外重启中存活。必威国际有限公司

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

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

  • 可扩展的:管道插件支持DSL的自定义扩展1以及与其他插件集成的多种选项。

尽管詹金斯一必威国际有限公司直允许将自由式工作程序的基本形式连接在一起,以执行连续的任务,4Pipeline使这个概念在Jenkins中成为一流的公民。必威国际有限公司

基于Jenkins可扩展性的核心价值,管道必威国际有限公司也可以由用户进行扩展管道共享库以及插件开发者。5

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

管道流

管道的概念

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

管道

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

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

节点

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

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

阶段

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

一步

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

管道语法概述

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

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

声明式管道基础

在声明式管道语法中管道块定义了整个管道中完成的所有工作。

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

脚本化管道基础

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

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

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

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

管道的例子

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

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

有关管道语法的更多信息,请参阅管道的语法页面。


4.其他插件已经被用来实现使用Freestyle Jobs的复杂行为,如Copy Artifact、Parameterized Trigger和Promoted Builds插件


这个页面有用吗?

请通过这个提交你对这个页面的反馈快速形成

或者,如果您不希望完成快速表单,您可以简单地指出,如果您觉得这个页面有帮助?


看到现有的反馈在这里