在Jenkins Pipeline中标记一个阶段,例如" UNSTABLE"但是继续进行未来阶段?

时间:2017-12-03 16:29:35

标签: jenkins jenkins-pipeline

我将使用Jenkins管道插件在多个节点let ritemprocess (a:Room) = match a.item with | Bomb bomb -> procBomb bomb ... A {{1}上测试多个二进制文件B C 1 }。 在我的测试结束时,我希望得到所有可能组合的每一个结果。因此,当单个阶段失败时,我的管道可能不会中止。它应该继续。

2

但是当第一个二进制返回的值不等于零(" Binary不在系统上工作")时,它的阶段被标记为FAILURE,并且跳过任何其他阶段。

Jenkins Pipeline是否有可能将舞台标记为"不稳定"但继续运行其他测试?

根据Continue Jenkins job after failed stage while marking stage as failed,无法将此步骤标记为失败。并行运行任务的解决方案对我的设置不起作用。那么可以安全地将其标记为某些东西吗?是否可以操纵舞台的结果?

这个问题How to continue past a failing stage in Jenkins declarative pipeline syntax意图使用脚本化管道。如果有可能以其他方式进行,我想避免这样做。

3

3 个答案:

答案 0 :(得分:2)

现在有一个更优雅的解决方案,不仅允许您设置阶段,而且工作结果不稳定。使用catchError,您可以设置阶段和构建结果的任意组合:

pipeline {
    agent any
    stages {
        stage('1') {
            steps {
                sh 'exit 0'
            }
        }
        stage('2') {
            steps {
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                    sh "exit 1"
                }
            }
        }
        stage('3') {
            steps {
                sh 'exit 0'
            }
        }
    }
}

在上面的示例中,所有阶段都将执行,管道将成功,但是阶段2将显示为失败:

Pipeline Example

如上所述,您可以自由选择buildResultstageResult。您甚至可以使构建失败并继续执行管道。

只需确保您的Jenkins是最新的,因为这是一个相当新的功能。 (管道:“基本步骤”必须为2.18或更高版本)

答案 1 :(得分:1)

对于脚本化管道,您可以在阶段内使用try .. catch块,然后设置currentBuild.result = 'UNSTABLE'

在异常处理程序中。

答案 2 :(得分:1)

声明性管道:尽管使用currentBuild.result = 'UNSTABLE'也可以在声明性管道中使用,但无论哪个阶段失败,Blue Ocean都将所有阶段显示为不稳定状态。

enter image description here

要仅将特定阶段标记为不稳定阶段,请按照阶段here中的步骤unstable(message: String)进行操作,并安装/更新以下插件:

  • 管道:2.16或更高版本的基本步骤
  • 管道:API插件为2.34或更高版本
  • 管道:Groovy到2.70或更高版本
  • 管道图分析到1.10或更高版本

示例管道阶段

stage('Sign Code') {
    steps {
        script {
            try {
                pwd()
                sh "<YOUR SCRIPT HERE>"
            }
            catch (err) {                                        
                unstable(message: "${STAGE_NAME} is unstable")
            }
        }
    }
}

enter image description here

  

注意:这还将标记整个构建状态为不稳定。