jenkins pipeline 把数据推送至 jenkins pipeline post,上一篇学习了 Agent 的这个指令和相关参数的基本使用,基本上掌握了 node 这个可选参数就好。

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 语句还有其他的指令。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐