2 3。在测试结束时,我希望获得所有可能组合的每一个结果。因此,当单个阶段失败时,我的管道可能不会中止。它应该继-6ren">
gpt4 book ai didi

jenkins - 将 Jenkins Pipeline 中的一个阶段标记为 "UNSTABLE",但继续处理 future 的阶段?

转载 作者:行者123 更新时间:2023-12-02 10:44:09 25 4
gpt4 key购买 nike

我将使用 Jenkins 管道插件在多个节点 1 上测试多个二进制文件 A B C > 2 3。在测试结束时,我希望获得所有可能组合的每一个结果。因此,当单个阶段失败时,我的管道可能不会中止。它应该继续。

eg: A1 green, A2 green, A3 red, B1 green, B2 red, ..., C3 green

但是,当第一个二进制文件返回的值不为零(“二进制文件在系统上不起作用”)时,它的阶段将被标记为 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意图使用脚本化管道。如果可以通过其他方式做到这一点,我想避免这种情况。

pipeline {
agent {label 'master'}
stages {
stage('A1') {
agent {label 'Node1'}
steps {
sh 'binA'
}
}
stage('A2') {
agent {label 'Node1'}
steps {
sh 'binB' // If this bin fails, all following stages are skipped
}
}
// ...
stage('C3'){
agent {label 'Node3'}
steps {
sh 'binC'
}
}
}
}
<小时/>

最佳答案

声明式管道:虽然使用 currentBuild.result = 'UNSTABLE' 也适用于声明式管道,但 Blue Ocean 会将所有阶段显示为不稳定,无论哪个阶段失败。

enter image description here

要仅将特定阶段标记为不稳定,请使用步骤unstable(message: String),如here所述。在您的阶段中并安装/更新以下插件:

  • 管道:升级到 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

Note: This also marks the overall build status as unstable.

关于jenkins - 将 Jenkins Pipeline 中的一个阶段标记为 "UNSTABLE",但继续处理 future 的阶段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47620529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com