jenkins pipeline语法

jenkins pipeline语法

一.声明式

声明式Pipeline必须包含在名为pipeline的语句块中,典型的声明式Pipeline语法如下

pipeline {
    agent any
    environment { }
    stages {
        stage("Build") {
            steps {
                sh 'echo Building...
            }
        }

        stage("Test") {
            steps {
                sh 'echo Testing...'
            }
        }
    }
}

一个合法的Pipeline遵从下面的几个原则:

  • 顶层语句块只能是pipeline {}
  • 每一个语句只能写在一行,没有分隔符,例如分号“;”
  • 结构块只能是Sections、Directive、steps或者赋值语句其中之一
  • 所有的属性引用都被视为没有参数的方法调用,例如input等同于input()

二.脚本式

Scripted Pipeline对语法的要求比较宽松,顶层可以是node,也可以是stage。node可以嵌套stage,stage反过来也可以嵌套node。典型的脚本式Pipeline语法如下:

node {
    stage("Build") {
        sh 'echo Building...'
    }

    stage("Test"){
        sh 'echo Testing...'
    }
}

基本

node {
    dir('/home/share/node/falcon') {
        stage("git") {
            sh "git fetch origin"
            sh "git checkout -f origin/master"
        }
}

dir('路径')
更换执行目录,jenkins默认的执行目录在环境设置中设置,默认是/

stage("git")
方法是阶段的名称,这个是完全自定义的,相当于给构建流程中的某些步骤称为一个阶段,比如git操作阶段、安装依赖阶段、编译阶段、发布阶段

sh
后接的就是命令行操作了,如果只有一行,那么用''或者用""包裹起来,如果有多行的话,用'''包裹

判断

pipeline脚本同其它脚本语言一样,从上至下顺序执行,它的流程控制取决于Groovy表达式,如if/else条件语句。

在构建项目时,我们可以写一些条件,例如检测项目是否在本地存在,如果存在就进到项目了拉取最新版本,不存在直接拉取最新版本的项目

node {
    dir('/home/share/www') {
        stage('Git') {
            if(fileExists('openapi')) {
                dir('/home/share/www/openapi') {
                    sh 'git fetch origin'
                    sh 'git checkout master'
                    sh 'git pull'
                }
            } else {
                sh 'git clone git@git.coding.net:flashtd1/DPOpenAPI.git openapi'
            }
        }
    }
}

if(fileExists('文件名'))
判断文件是否存在

异常处理

pipeline脚本流程控制的另一种方式是Groovy的异常处理机制。当任何一个步骤因各种原因而出现异常时,都必须在Groovy中使用try/catch/finally语句块进行处理,举例如下:

jenkinsfile (Scripted Pipeline)
node {
    stage('Example') {
        try {
            sh 'exit 1'
        }
        catch (exc) {
            echo 'Something failed, I should sound the klaxons!'
            throw
        }
    }
}

Steps

pipeline最核心和基本的部分就是“step”,从根本上来说,steps作为Declarative pipeline和Scripted pipeline语法的最基本的语句构建块来告诉jenkins应该执行什么操作。

Scripted pipeline没有专门将steps作为它的语法的一部分来介绍,但是在Pipeline Steps reference这篇文档中对pipeline及其插件涉及的steps做了很详细的介绍。如有需要可参考jenkins官网对该部分的介绍Pipeline Steps reference

node

这里的node对应于Declarative Pipeline的agent,用于指定构建步骤应该在哪个构建服务器执行。

node('master'){
    stage('Build'){
        echo 'Building...'
    }
}

node可以嵌套stage,也可以被stage嵌套

stage('Build'){
    node('linux'){
        sh 'echo building in linux'
    }

    node('windows'){
        bat 'echo building in windows'
    }
}

withEnv

withEnv方法和environment语句块对应,用于定义环境变量。

0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论