自动化运维持续集成(CI)和持续发布(CD)系列·Pipeline

Jenkins为了更好支持CI/CD,通过Groovy语言这个DSL(动态描述语言)开发了Pipeline,并以插件的形式集成到Jenkins中,实现和集成持续交付的管道。

本文简单讲述如何实施pipeline以及基本语法(Declarative模式)。

Pipeline应用

首先,在Jenkins中创建一个Pipeline(流水线)任务

然后,在流水线Pipeline script模式的脚本框中输入相应的脚本,但是,当要执行非常复杂的流水线任务时,script模式将不堪重任,因此,Pipeline还提供了Pipeline script from SCM模式,指定Jenkinsfile并执行其中的指令。

Pipeline语法

访问Pipeline语法网站

基本语法

Declarative Pipeline中的基本语句和表达式遵循与Groovy语法相同的规则 ,但也有例外:

  • 每条语句按行分隔
  • 任何语句必须包含在块(sections)中
  • 块中只能是包含章节/指令/步骤或赋值的语句
  • 属性引用语句被视为无参数方法调用

因本系列文档主要是讲述CI/CD,所以本文先简单介绍几种最基本的关键字及语法,后续将有更多文章详细讲述Pipeline。

关键字 说明
pipeline 一个groovy/Jenkinsfile文件中不光只有Pipeline代码,还有其他的工具类方法等。通过pipeline关键字告诉Jenkins在{}中的代码为pipeline代码。
agent 用来告诉Jenkins在指定的节点机器上执行代码。
any 在所有可用的agent主机上执行pipeline或stage。
none 不分配代理,需要在每个stage中指定agent主机。
label 通过label在Jenkins环境中指定可用的agent主机。
node 同label参数,但node运行其他选项,例如customWorkspace。
stages 一个stages至少包含一个stage操作,用于实现一个业务场景的自动化,例如build/test/deploy等。
stage 作为最小的代码块被嵌套在stages中。
steps 一个stage下至少有一个steps,指一个简单步骤,一般为几行代码或者调用外部一个模块类的具体功能。
step 在Declarative模式中,不支持在steps中嵌套step。
post 支持多种条件指令:always/changed/failure/success/unstable/aborted,一般用于发送通知,比如邮件/微信等。
changed 如果当前Pipeline运行的状态与之前完成的状态不同,则触发操作。
failure 如果当前Pipeline运行失败,则触发操作。

脚本实例

pipeline {
    agent none
    stages {
        stage(‘Build’){
            agent {
                label ‘node1’
            }
        stage(‘Test’){
            agent {
                node {
                    label ‘node2’
                    customWorkspace "${env.JOB_NAME}/${env.BUILD_NUMBER}"
                }
            stages {
                stage ('Build') {
                    println "Build Files"
                }
                stage ('Test') {
                    println "Test Files"
                }
            }
        }
        stage ('Deploy') {
            steps {
                bat “dir /b”       //Windows版jenkins
                sh “echo $PATH”    //Linux版本jenkins
            }
        }
    }
    post {
        failure {
            script {
                //pipeline代码
            }
        }
    }
}

原创文章禁止转载:技术学堂 » 自动化运维持续集成(CI)和持续发布(CD)系列·Pipeline

精彩评论

2+6=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏