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

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

1.Declarative代码如下

pipeline {
    agent any 
    stages {
        stage('Build') { 
            steps {
                println "Build" 
            }
        }
        stage('Test') { 
            steps {
                println "Test" 
            }
        }
        stage('Deploy') { 
            steps {
                println "Deploy" 
            }
        }
    }
}

解释:

        上面是一个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模式代码

node {  
    stage('Build') { 
        // 
    }
    stage('Test') { 
        // 
    }
    stage('Deploy') { 
        // 
    }
}

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

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

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值