Pipeline 备忘

@bingoogolapple 2017-12-22 03:15:21发表于 bingoogolapple/bingoogolapple.github.io 工具软件

  • 查看内置的环境变量,域名/pipeline-syntax/globals#env
  • 用 echo 输出日志,用 error 使当前的 stage 返回失败
stage('test') {
    // echo "用 echo 输出日志"
    // error "用 error 使当前的 stage 返回失败"
    test()
}
def test() {
    echo "用 echo 输出日志"
    error "用 error 使当前的 stage 返回失败"
}
wrap([$class: 'BuildUser']) {
    echo "BUILD_USER 为 ${BUILD_USER}"
    echo "BUILD_USER_ID 为 ${BUILD_USER_ID}"
    echo "BUILD_USER_EMAIL 为 ${BUILD_USER_EMAIL}"
}
  • 参数化构建时,参数会放入 params 中,params 中不会包含 BUILD_NUMBER,params 实际上就是 map
echo "参数 ${params}"
参数 [isSdf:true, branch:develop]
  • 当前 job 的构建版本号可以通过 ${BUILD_NUMBER} 或 ${BUILD_ID} 来获取
  • 当前 job 的工作目录可通过 ${WORKSPACE} 来获取
  • 可以直接通过 ${isSdf} 来取值,但是建议都通过 params.isSdf 来取值,如果直接 isSdf,if 判断会有问题
if (isSdf) { // 不管 isSdf 是否为 true,都为真
    echo "直接取值,需要"
} else {
    echo "直接取值,不需要"
}
if (params.isSdf) { // 只有 isSdf 为 true 是才为真
    echo "需要"
} else {
    echo "不需要"
}
  • 变量名不能以减号 - 分隔
  • 不管是在外部、stage 内、方法内,定义变量时加了 def 就是局部变量,不加 def 就是全局变量
  • 如果想在 sh 中使用 groovy 中定义的变量,可以在 groovy 中通过 env.xxxx 来定义变量
stage('test') {
    env.CUSTOM_PARAM = "自定义参数"
    def cmd = '''echo ${CUSTOM_PARAM}
    echo ${CUSTOM_PARAM}
    echo ${CUSTOM_PARAM}
    '''
    sh cmd
}
  • 创建目录和判断文件是否存在
def currentDirectory = pwd()
echo "当前目录 ${currentDirectory}"
sh "ls"
def testDir = currentDirectory + "/testDir"
if (!fileExists(testDir)) {
    sh "mkdir ${testDir}"
}
sh "ls"
  • 日志中不输出 sh 命令
def shWhithoutLog(cmd) {
    sh('#!/bin/sh -e\n' + cmd)
}
  • 获取 shell 的输出和状态
stage('test') {
    env.CUSTOM_PARAM = "自定义参数"
    def cmd = '''echo ${CUSTOM_PARAM}
    echo ${CUSTOM_PARAM}
    '''
    output = sh (
        script: cmd,
        returnStdout: true
    ).trim()
    echo "输出为:${output}"
    result = sh (
        script: cmd,
        returnStatus: true
    )
    echo "结果为:${result}"
}
  • 触发其他 job
build job: 'other_job_name', parameters: [string(name: 'channels', value: 'a,b,c'), string(name: 'apk_url', value: 'xxxxx'), string(name: 'app_name', value: 'xxx')]