Jenkins高级篇之Pipeline语法篇-3-第一个Pipeline代码详细解释

释放双眼,带上耳机,听听看~!

        前面一篇,我用Jenkins支持的脚本输入框执行构建,还用了github上拉取代码下来进行构建项目。这篇,就来详细解释下每行代码的含义,还有就是复习一下第一篇提到的几个关键字,这样的基础中的基础知识。

1.Declarative代码如下


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
1pipeline {
2    agent any
3    stages {
4        stage('Build') {
5            steps {
6                println "Build"
7            }
8        }
9        stage('Test') {
10            steps {
11                println "Test"
12            }
13        }
14        stage('Deploy') {
15            steps {
16                println "Deploy"
17            }
18        }
19    }
20}
21
22

解释:

        上面是一个Declarative类型的Pipeline,这个,我前面说过,基本上实际开发都采用这个。虽然Scripted模式的Pipeline代码行数精简,很短,上面Declarative有20行代码,如果用Scripted模式,就10行代码。但是Scripted脚本很灵活,不好写,也不好读,维护起来相等困难。我们先来学习Declartive里面代码含义,有些基础知识在Scripted也有,有些却没有。

1)第一行是小写pipeline,然后一对大括{},学习过代码的人都知道,大括号里面就是代码块,用来和别的代码块隔离出来。pipeline是一个语法标识符,前面我叫关键字。如果是Declarative类型,一定是pipeline {}这样起头的。当然脚本文件,pipeline不要求一定是第一行代码。也就是说pipeline前面可以有其他代码,例如导入语句,和其他功能代码。pipeline是一个执行pipeline代码的入口,jenkins可以根据这个入门开始执行里面不同stage

2)第二行agent any,agent是一个语法关键字,any是一个option类型。agent是代理的意思,这个和选择用jenkins平台上那一台机器去执行任务构建有关。我当然jenkins只有一个master节点,没有添加第二个节点机器,后面文章,等我们专门学习agent这个指令的时候,再来介绍如何添加一个节点。等添加了新节点,我们这个地方就可以选择用master还是一个从节点机器来执行任务,所以any是指任意一个可用的机器,当然我环境就是master。

3)第三行stages{}, stages是多个stage的意思,也就是说一个stages可以包含多个stage,从上面代码结果你也可以看出来。上面写了三个stage,根据你任务需要,你可以写十多个都可以。

4)第四行stage('Build') {}, 这个就是具体定义一个stage,一般一个stage就是指完成一个业务场景。‘Build’是认为给这个任务取一个名字。这个名称可以出现在Jenkins任务的页面上,在我前面一篇文章结尾处的图片可以显示着三个stage的名称,分别是Build,Test,和Deploy。

5)第五行steps{},字面意思就是很多个步骤的意思。这里提一下,看到了steps,当然还有step这个指令。一般来说,一个steps{}里面就写几行代码,或者一个try catch语句。

6)第六行,这个地方可以定义变量,写调用模块代码等。这里,我就用Groovy语法,写了一个打印语句。如果你机器没有安装groovy,你安装了python,你可以写python的打印语句,或者用linux的shell,例如sh "echo $JAVA_HOME"

       后面的stage含义就是一样的,上面写了三个state,描述了三个业务场景,例如打包build,和测试Test,以及部署,这三个串联起来就是一个典型的CD Pipeline流程。实际的肯定不是这么写,因为Test就包含很多个阶段,和不同测试类型。这些不同测试类型,都可以细分成很多个stage去完成。

2.Scripted模式代码


1
2
3
4
5
6
7
8
9
10
11
12
1node {  
2    stage('Build') {
3        //
4    }
5    stage('Test') {
6        //
7    }
8    stage('Deploy') {
9        //
10    }
11}
12

        这个代码,有两点和上面不同。第一个是Scripted模式是node{}开头,并没有pipeline{},这个区别好知道。第二个要指出的是,scripted模式下没有stages这个关键字或者指令,只有stage。上面其实可以node('Node name') {}来开头,Node name就是从节点或master节点的名称。

       基本代码含义就讲解到这里,很简单,需要把这几个常见的指令熟记就行。不管哪种模式,你都要注意一对{},特别是多层嵌套,不要丢了或者少了一些结束大括号。再提一个注释语法,由于pipeline是采用groovy语言设计的,而groovy是依赖java的,所以上面//表示注释的意思。

给TA打赏
共{{data.count}}人
人已打赏
安全经验

职场中的那些话那些事

2021-9-24 20:41:29

安全经验

nginx日志分析利器GoAccess

2021-11-28 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索