当管道名称以交付结束时,如何跳过 jenkinsfile 管道中的一个阶段?

Dee*_*aut 13 jenkins-pipeline

我有 2 个管道,一个用于审查,一个用于部署,所以当管道以审查结束时,我想跳过 jenkins 文件执行,但是当以部署结束时,它应该执行阶段或我尝试使用的 jenkins 文件,如果但这是声明性管道,所以当应该使用时,如果遇到部署管道结束,我想避免使用 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!"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Dib*_*tya 12

@StephenKing 的答案的另一种选择,这也是正确的,您可以when在评估布尔值时重写块,如下所示:

stages {
    stage('Deploy') {
        when { 
            expression {
                return Deploy
            }
        }
        steps {
            echo "Hello, bitwiseman!" // Step executes only when Deploy is true

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这将仅在变量Deploy评估为 true时执行阶段 Deploy ,否则将跳过阶段。


Ste*_*ing 11

您可以使用 跳过声明性管道中的阶段when,因此以下应该有效。

stages {
  stage('Deploy') {
    when { equals expected: true, actual: Deploy }
    steps {
      // ...
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


mir*_*ran 7

我也很难找到它,但最后:

stage('Speak') {
     when {
         expression { params.REQUESTED_ACTION != 'SILENCE' }
     }
     steps {
         echo "Hello, bitwiseman!"
     }
}  
Run Code Online (Sandbox Code Playgroud)

Jenkins 文档与示例:https : //jenkins.io/doc/book/pipeline/syntax/#when-example