Cut*_*Eye 10 jenkins jenkins-pipeline
我将使用 Jenkins 管道插件A B C在多个节点上测试多个二进制文件1 2 3。在我的测试结束时,我希望获得所有可能组合的每一个结果。因此,当单个阶段失败时,我的 Pipe 可能不会中止。它应该继续。
eg: A1 green, A2 green, A3 red, B1 green, B2 red, ..., C3 green
Run Code Online (Sandbox Code Playgroud)
但是当第一个二进制返回的值不等于零(“二进制不在系统上工作”)时,它的阶段被标记为 FAILURE 并且跳过任何其他阶段。
Jenkins Pipeline 是否有可能将阶段标记为“不稳定”但继续运行其他测试?
根据在失败阶段后继续詹金斯工作而将阶段标记为失败不能将此步骤标记为失败。并行运行任务的解决方案不适用于我的设置。那么是否可以安全地将其标记为其他内容?是否可以操纵阶段的结果?
这个问题如何继续过去 Jenkins 声明性管道语法意图使用脚本化管道的失败阶段。如果可以以其他方式做到这一点,我想避免这种情况。
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'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Eri*_*k B 12
现在有一个更优雅的解决方案,它不仅允许您设置一个阶段,而且工作结果不稳定。使用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'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,所有阶段都将执行,管道将成功,但阶段 2 将显示为失败:
如上所述,您可以自由选择buildResult和stageResult。您甚至可以使构建失败并继续执行管道。
只要确保您的 Jenkins 是最新的,因为这是一个相当新的功能。(管道:基本步骤需要是 2.18 或更新版本)
Dib*_*tya 11
声明式管道:虽然currentBuild.result = 'UNSTABLE'也在声明式管道中使用作品,但无论哪个阶段失败,Blue Ocean 都将所有阶段显示为不稳定。
要将特定阶段标记为不稳定,请在您的阶段中使用此处unstable(message: String)描述的步骤并安装/更新以下插件:
示例管道阶段:
stage('Sign Code') {
steps {
script {
try {
pwd()
sh "<YOUR SCRIPT HERE>"
}
catch (err) {
unstable(message: "${STAGE_NAME} is unstable")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:这也将整体构建状态标记为不稳定。
| 归档时间: |
|
| 查看次数: |
13081 次 |
| 最近记录: |