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   #1
    stages {
        stage('Build') {     #2
            steps {
                //       #3
            }
        }
        stage('Test') {   #4
            steps {
                //  #5
            }
        }
        stage('Deploy') { #6
            steps {
                //  #7
            }
        }
    }
}

1、在任何可用的代理上,执行流水线或它的任何阶段。

2、定义 “Build” 阶段。

3、执行与 “Build” 阶段相关的步骤。

4、 定义"Test" 阶段。

5、 执行与"Test" 阶段相关的步骤。

6、 定义 “Deploy” 阶段。

7、执行与 “Deploy” 阶段相关的步骤。


脚本化流水线

Jenkinsfile (Scripted Pipeline)
node {   #1
    stage('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 {  #1
    agent any   #2
    stages {
        stage('Build') {   #3
            steps {      #4
                sh '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/

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值