Jenkins高级篇之Pipeline语法篇-5-Declarative Pipeline语法-post/stages/steps

上一篇学习了Agent的这个指令和相关参数的基本使用,基本上掌握了node这个可选参数就好。这一篇,来学习post和stages指令。

1.post指令基本概述

post部分定义将在Pipeline运行或阶段结束时运行的操作。一些条件后 的块的内支持post:部分 always,changed,failure,success,unstable,和aborted。这些块允许在Pipeline运行或阶段结束时执行步骤,具体取决于Pipeline的状态。

简单来说,post可以放在顶层,也就是和agent{…}同级,也可以放在stage里面。一般放顶层的比较多。而且pipeline代码中post代码块不是必须的,使用post的场景基本上执行完一个构建,进行发送消息通知,例如构建失败会发邮件通知。

基本代码布局:

Pipeline {
    agent any
        stages {
            stage (‘Test’) {
        }
    }
    post {
          //写相关post部分代码
    }
}

 

2.不同post条件的基本用法

在post代码块区域,支持多种条件指令,这些指令有always,changed,failure,success,unstable,和aborted。下面分别来介绍这些条件的基本用法。

 

条件1:always

作用:无论Pipeline运行的完成状态如何都会执行这段代码

基本代码:

pipeline {
    agent {
        node {
            label ‘xxx-agent-机器’
            customWorkspace "${env.JOB_NAME}/${env.BUILD_NUMBER}"
        }
    }
    stages {
        stage (‘Build’) {
            bat “dir” // 如果jenkins安装在windows并执行这部分代码
            sh “pwd”  //这个是Linux的执行
        }
    }
    post {
        always {
            script {
                //写相关清除/恢复环境等操作代码
            }
        }
    }
}

这个always场景,很容易想到的场景就是,事后清理环境。例如测试完了,对数据库进行恢复操作,恢复到测试之前的环境。

 

条件2:changed

作用:只有当前Pipeline运行的状态与先前完成的Pipeline的状态不同时,才能触发运行。

基本代码:

pipeline {
    agent {
        node {
            label ‘xxx-agent-机器’
            customWorkspace "${env.JOB_NAME}/${env.BUILD_NUMBER}"
        }
    }
    stages {
        stage (‘Build’) {
            bat “dir” // 如果jenkins安装在windows并执行这部分代码
            sh “pwd”  //这个是Linux的执行
        }
    }
    post {
        changed {
            script {
                // 例如发邮件代码
            }
        }
    }
}

这个场景,大部分是写发邮件状态。例如,你最近几次构建都是成功,突然变成不是成功状态,里面就触发发邮件通知。当然,使用changed这个指令没success和failure要频率高。

 

条件3:failure

作用:只有当前Pipeline运行的状态与先前完成的Pipeline的状态不同时,才能触发运行。

基本代码:

pipeline {
    agent {
        node {
            label ‘xxx-agent-机器’
            //customWorkspace "${env.JOB_NAME}/${env.BUILD_NUMBER}"
        }
    }
    stages {
        stage (‘Build’) {
            bat “dir” // 如果jenkins安装在windows并执行这部分代码
            sh “pwd”  //这个是Linux的执行
        }
    }
    post {
        failure {
            script {
                // 例如发邮件代码
            }
        }
    }
}

这个failure条件一般来说,百分百会写到Pipeline代码中,内容无非就是发邮件通知,或者发微信群,钉钉机器人,还有国外的slack聊天群组等。

 

剩下的三个条件:success, unstable, aborted 我就不写代码介绍,和上面一样的代码结构,简单介绍下这三个条件的含义。Success和上面failure都是只Jenkins job的执行结果。是成功,Jenkins UI这次构建会显示绿色图标;如果是失败,就显示红色图标;如果是取消,也就是aborted状态,就显示灰色图标。还有一个是不稳定状态,叫unstable,这几个单词都是和Jenkins job构建结果的概念,如果你熟悉Jenkins,那么这些概念很简单。本篇要求掌握,always和failure和success的基本使用代码。

 

3.stages 和steps基本使用

前面简单说了steps和step的语法,这里来详细说说steps语法,在Declarative 模式中,只支持steps,不支持在steps {…} 里面嵌套写step{…}。一个stage 下至少有一个steps,一般也就是一个steps。我们可以在一个steps下写调用一个或者几个方法,也就是两三行代码。具体的代码实现,可以放在别的包里面。stages下可以包含多个stage, 在一个Declarative Pipeline脚本中,只允许出现一次stages。

 

以后我们大部分的pipeline代码都在每一个stage里面的steps下,下面写一个最基础的,还是第二篇文章的这个基础代码。

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

注:上面println是Groovy的语法,就是一个打印语句。不管以后pipeline代码有多么复杂,都是以这个为基础骨架,例如添加一些try catch语句还有其他的指令。

 

 

 

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Jenkins Pipeline是一种可将软件交付过程定义为代码的方式。它使用一种基于Groovy的DSL(领域特定语言)来描述构建和部署过程。下面是一些Jenkins Pipeline语法要点: 1. 定义Pipeline:在Jenkinsfile中使用`pipeline`关键字来定义Pipeline。可以选择Declarative Pipeline或Scripted Pipeline。 2. Declarative Pipeline:使用`pipeline`块包裹整个Pipeline,并使用`stages`块来定义各个阶段。每个阶段内可以包含多个步骤。 ```groovy pipeline { agent any stages { stage('Build') { steps { // 构建步骤 } } stage('Test') { steps { // 测试步骤 } } // 可以定义更多阶段 } } ``` 3. Scripted Pipeline:使用`node`或`stage`等关键字来定义节点或阶段,并在节点或阶段内编写Groovy脚本。 ```groovy node { // 节点级别的操作 stage('Build') { // 构建步骤 } stage('Test') { // 测试步骤 } // 可以定义更多阶段 } ``` 4. 步骤(Steps):在每个阶段或节点内,可以使用各种Jenkins提供的步骤来执行具体任务,例如构建、测试、部署等。步骤可以是Jenkins内置的或插件提供的。 ```groovy stage('Build') { steps { // 执行构建任务 sh 'mvn clean install' } } ``` 5. 环境变量:可以使用`environment`块来定义Pipeline的环境变量。 ```groovy pipeline { environment { MY_VAR = 'value' } stages { // 阶段定义 } } ``` 以上是Pipeline的基本语法要点,你可以根据实际需求来组织和扩展Pipeline。更详细的语法和示例可以参考Jenkins官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值