【问题标题】:How do I skip a Jenkins stage after executing some of its steps (like the when directive)?在执行 Jenkins 的某些步骤(如 when 指令)后,如何跳过 Jenkins 阶段?
【发布时间】:2020-07-15 03:05:22
【问题描述】:

如何在执行过程中跳过 Jenkins 阶段?这就像在某些步骤之后或在步骤中间使用when,一旦确定了跳过条件。我知道我可以进一步分解阶段/步骤并使用全局变量来实现这一点,但似乎应该有更简单的方法。

该步骤应显示为已跳过、未失败或不稳定。

stage('Builds') {
    failFast true
    parallel {
        stage('FlagA') {
            steps {
                BuildWithFlag("FlagA")
            }
        }
        stage('FlagB') {
            steps {
                BuildWithFlag("FlagB")
            }
        }
        ...

void BuildWithFlag(String flag) {
    skipCondition = false
    <setup-steps>
    if(skipCondition) {
        currentStage.result = '' // Doesn't work
        return
    }
    <build-steps>
}

相关:
Conditional step/stage in Jenkins pipeline
How to perform when..else in declarative pipeline
Jenkins Pipeline stage skip based on groovy variable defined in pipeline

所有这些都在阶段开始时使用when。我需要在一个步骤的中途模仿它。

【问题讨论】:

    标签: jenkins jenkins-pipeline jenkins-groovy


    【解决方案1】:

    您想将舞台设置为"NOT_BUILT"。这是使用when 跳过的步骤的状态。

    例如

    if(skipCondition) {
        catchError(buildResult: 'SUCCESS', stageResult: 'NOT_BUILT') {
            error "Skipping..." // Force an error so we can set the stageResult
        }
        return
    }
    

    【讨论】:

    • "return" 实际上从正在执行的“步骤”返回控制。它不会退出舞台。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    相关资源
    最近更新 更多