流水线中如何使用条件判断来决定某个stage是否需要执行呢?
答案是 使用 when 这个闭包。 when 放到 stage 中使用,条件成立 就会执行 下面的 step是中的语句的。
Conditionals in a Declarative Pipeline Jenkinsfile
例子1
pipeline {
agent any
parameters {
choice(
choices: ['greeting' , 'silence'],
description: '',
name: 'REQUESTED_ACTION')
}
stages {
stage ('Speak') {
when {
// Only say hello if a "greeting" is requested
expression { params.REQUESTED_ACTION == 'greeting' }
}
steps {
echo "Hello, bitwiseman!"
}
}
}
}
例子2
条件判断,模拟 布尔 值判断,真假值判断
when {
// case insensitive regular expression for truthy values
expression { return token ==~ /(?i)(Y|YES|T|TRUE|ON|RUN)/ }
}
steps {
/* step */
}
例子3
条件判断 or 或的意思。2个条件 A 和 B 有一个成立就会执行下面的steps的语句。
when {
// A or B
expression { return A || B }
}
steps {
/* step */
}
例子4
when {
expression { return readFile('pom.xml').contains('mycomponent') }
}
steps {
/* step */
}
例子5
pipeline {
agent any
parameters {
string (
defaultValue: '*',
description: '',
name : 'BRANCH_PATTERN')
booleanParam (
defaultValue: false,
description: '',
name : 'FORCE_FULL_BUILD')
}
stages {
stage ('Prepare') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: "origin/${BRANCH_PATTERN}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'LocalBranch']],
submoduleCfg: [],
userRemoteConfigs: [[
credentialsI
|