我有2个管道,一个用于审查,一个用于部署 所以当管道审查结束时,我想跳过詹金斯文件执行 但是当部署结束时,它应该执行阶段或jenkins文件 我尝试使用if,但这是声明性管道,因此当应该使用时,如果我遇到deploy管道末端,我想避免使用when条件执行阶段
#!/usr/bin/env groovy
final boolean Deploy = (env.JOB_NAME as String).endsWith("-deploy")
pipeline {
agent any
parameters {
choice(
choices: ['greeting' , 'silence'],
description: '',
name: 'REQUESTED_ACTION')
}
stages {
//how to ouse when here to use deploy vairable to avoide execution of stage below
stage ('Speak') {
steps {
echo "Hello, bitwiseman!"
}
}
}
}
答案 0 :(得分:1)
我也很难找到它,但是最后:
stage('Speak') {
when {
expression { params.REQUESTED_ACTION != 'SILENCE' }
}
steps {
echo "Hello, bitwiseman!"
}
}
Jenkins文档,其中包含示例:https://jenkins.io/doc/book/pipeline/syntax/#when-example
答案 1 :(得分:1)
@StephenKing答案的一种替代方法(也是正确的),您可以在评估布尔值时重写when
块,如下所示:
stages {
stage('Speak') {
when {
expression {
return Deploy
}
}
steps {
echo "Hello, bitwiseman!" // Step executes only when Deploy is true
}
}
}
仅当变量Deploy
评估为true时,这将执行阶段Deploy,否则将跳过该阶段。
答案 2 :(得分:0)
您可以使用when
跳过声明式管道中的阶段,因此以下操作应该有效。
stages {
stage('Deploy') {
when { equals expected: true, actual: Deploy }
steps {
// ...
}
}
}
答案 3 :(得分:0)
即使您可以使用以下代码跳过某些步骤。假设REQUIRED_UPLOAD_INSTALL是一个参数。
MONGO_URI = 'mongodatabase://mongodb:27017/UTA_Enrollment'
但是它在发布步骤中不支持,甚至在when语法中也不支持。