Jenkins —— 什么是流水线
什么是流水线
流水线提供了一组可扩展的工具,通过 特定的语法对从简单到复杂的交付流水线 “作为代码” 进行建模。
对Jenkins 流水线的定义被写在一个文本文件中 (成为 Jenkinsfile),该文件可以被提交到项目的源代码的控制仓库。_这是"流水线即代码"的基础; 将CD 流水线作为应用程序的一部分,像其他代码一样进行版本化和审查。 创建 Jenkinsfile并提交它到源代码控制中提供了一些即时的好处。
定义流水线的语法, 无论是在 web UI 还是在 Jenkinsfile 中都是相同的, 通常认为在Jenkinsfile 中定义并检查源代码控制是最佳实践。
声明式和脚本化的流水线语法
Jenkinsfile 能使用两种语法进行编写 - 声明式和脚本化。
声明式和脚本化的流水线从根本上是不同的。 声明式流水线的是 Jenkins 流水线更近的特性:
- 相比脚本化的流水线语法,它提供更丰富的语法特性,
- 是为了使编写和读取流水线代码更容易而设计的。
流水线的概念
流水线
流水线定义一个CD流水线模型,它的代码定义了整个构建过程,包括构建、测试和交付应用程序阶段。pipeline 块是声明式流水线的关键部分。
节点
节点是一个机器 ,它是Jenkins环境的一部分并且能够执行流水线。 node块是 脚本化流水线语法的关键部分。
阶段
stage 块定义了在整个流水线的执行任务的标识,展示Jenkins流水线目前的 状态/进展。
步骤
一个单一的任务, a step 告诉Jenkins 在特定的时间点要做_what_ (或过程中的 “step”)。
声明式流水线
Jenkinsfile (Declarative Pipeline)
pipeline {agent any #1stages {stage('Build') { #2steps {// #3}}stage('Test') { #4steps {// #5}}stage('Deploy') { #6steps {// #7}}}
}
1、在任何可用的代理上,执行流水线或它的任何阶段。
2、定义 “Build” 阶段。
3、执行与 “Build” 阶段相关的步骤。
4、 定义"Test" 阶段。
5、 执行与"Test" 阶段相关的步骤。
6、 定义 “Deploy” 阶段。
7、执行与 “Deploy” 阶段相关的步骤。
脚本化流水线
Jenkinsfile (Scripted Pipeline)
node { #1stage('Build') { #2// #3}stage('Test') { #4// #5 }stage('Deploy') { #6 // #7}
}
1、在任何可用的代理上,执行流水线或它的任何阶段。
2、定义 “Build” 阶段。 stage 块 在脚本化流水线语法中是可选的。 然而, 在脚本化流水线中实现 stage 块 ,可以清楚的显示Jenkins UI中的每个 stage 的任务子集。
3、执行与 “Build” 阶段相关的步骤。
4、 定义"Test" 阶段。
5、 执行与"Test" 阶段相关的步骤。
6、 定义 “Deploy” 阶段。
7、执行与 “Deploy” 阶段相关的步骤。
流水线示例
Jenkinsfile (Declarative Pipeline)
pipeline { #1agent any #2stages {stage('Build') { #3steps { #4sh 'make' #5}}stage('Test'){steps {sh 'make check'junit 'reports/**/*.xml' #6}}stage('Deploy') {steps {sh 'make publish'}}}
}
1、 pipeline是声明式流水线的一种特定语法,他定义了包含执行整个流水线的所有内容和指令的 “block” 。
2、agent是声明式流水线的一种特定语法,它指示 Jenkins 为整个流水线分配一个执行器 (在节点上)和工作区。
3、stage 是一个描述 stage of this Pipeline的语法块。在 Pipeline syntax 页面有关声明式流水线语法的stage块的信息。如 above所述, 在脚本化流水线语法中,stage 块是可选的。
4、steps 是声明式流水线的一种特定语法,它描述了在这个 stage 中要运行的步骤。
5、sh 是一个执行给定的shell命令的流水线 step (由 Pipeline: Nodes and Processes plugin提供) 。
6、junit 是另一个聚合测试报告的流水线 step (由 JUnit plugin提供)。
7、node 是脚本化流水线的一种特定语法,它指示 Jenkins 在任何可用的代理/节点上执行流水线 (和包含在其中的任何阶段)这实际上等效于 声明式流水线特定语法的agent。
参考文档
官方文档: https://www.jenkins.io/zh/doc/
流水线介绍: https://www.jenkins.io/zh/doc/book/pipeline/
流水线语法:https://www.jenkins.io/zh/doc/book/pipeline/syntax/
流水线入门:https://www.jenkins.io/zh/doc/book/pipeline/getting-started/
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
