如何将整个 Jenkins 管道构建标记为成功,在一个阶段失败后其余阶段没有 运行?
How to mark whole Jenkins pipeline build as SUCCESS, after a stage fails and the remaining stages don't run?
我的第一个阶段 运行 是一个 shell 脚本。出口 0 将其标记为成功,出口 1 将其标记为失败。如何将此结果读入管道并获得所需的行为:
- 运行 阶段 1
- 如果第 1 阶段失败,则不要 运行 其余阶段,而是将整个管道标记为成功
- 如果第 1 阶段成功,运行 剩余阶段
- 如果其中任何一个失败,将管道标记为失败
- 如果全部成功,将管道标记为成功
我在声明性管道中执行此操作,如何强制执行此行为?
您可以使用类似这样的方法,捕获错误然后更改 currentBuild 结果:
pipeline {
agent any
stages {
stage('Stage 1') {
steps {
script {
try {
// do something that fails
sh "exit 1"
} catch (Exception err) {
currentBuild.result = 'SUCCESS'
}
}
}
}
stage('Stage 2') {
steps {
echo "Stage 2"
}
}
stage('Stage 3') {
steps {
echo "Stage 3"
}
}
}
}
如果您需要更改特定阶段的结果,请查看 this link 解释如何执行它。
我的第一个阶段 运行 是一个 shell 脚本。出口 0 将其标记为成功,出口 1 将其标记为失败。如何将此结果读入管道并获得所需的行为:
- 运行 阶段 1
- 如果第 1 阶段失败,则不要 运行 其余阶段,而是将整个管道标记为成功
- 如果第 1 阶段成功,运行 剩余阶段
- 如果其中任何一个失败,将管道标记为失败
- 如果全部成功,将管道标记为成功
我在声明性管道中执行此操作,如何强制执行此行为?
您可以使用类似这样的方法,捕获错误然后更改 currentBuild 结果:
pipeline {
agent any
stages {
stage('Stage 1') {
steps {
script {
try {
// do something that fails
sh "exit 1"
} catch (Exception err) {
currentBuild.result = 'SUCCESS'
}
}
}
}
stage('Stage 2') {
steps {
echo "Stage 2"
}
}
stage('Stage 3') {
steps {
echo "Stage 3"
}
}
}
}
如果您需要更改特定阶段的结果,请查看 this link 解释如何执行它。