我想在所有阶段添加一个条件:
pipeline {
agent { label 'unix' }
options {
buildDiscarder(logRotator(numToKeepStr: '5', artifactNumToKeepStr: '5'))
}
when {branch 'master' }
stages {
}
}
我找到了在每个 when
上添加 steps
的任何解决方法,但我正在寻找只有一个 when
的解决方案
stage('master-branch-stuff') {
when {
branch 'master'
}
steps {
echo 'run this stage - ony if the branch = master branch'
}
}
答案 0 :(得分:2)
可以这样操作
声明式管道
pipeline {
agent any;
stages {
stage('build') {
when { branch 'master' }
stages {
stage('compile') {
steps {
echo 'compile'
}
}
stage('test') {
steps {
echo 'test'
}
}
stage('package') {
steps {
echo 'package'
}
}
}
}
}
}
脚本化管道
def branch
node {
stage('checkout') {
def myScm = checkout scm
branch = myScm['branch']
}
if(branch == 'master') {
stage('compile') {
echo "Compile"
}
stage('test') {
echo "Test"
}
stage('package') {
echo "Package"
}
} else {
echo "don't do anything"
}
}
答案 1 :(得分:0)
如果您想使用纯声明式管道,则不需要。
根据他们的文档,https://www.jenkins.io/doc/book/pipeline/syntax/#when,when
只允许“在 stage 指令内”。
stage {
when { ... }
...
}
但是,您可以在 script
块中添加阶段。所以你可以做类似的事情
stage {
when { ... }
steps {
script {
stage("scripted stage 1") { ... }
stage("scripted stage 2") { ... }
}
}
}
请记住,script
内的所有内容(包括阶段)都将遵循 scripted pipeline 规则