gpt4 book ai didi

jenkins - 尽早停止 Jenkins 管道作业

转载 作者:行者123 更新时间:2023-12-02 05:42:41 24 4
gpt4 key购买 nike

在我们的 Jenkins Pipeline 工作中,我们有几个阶段,我希望如果任何一个阶段失败,那么构建就会停止,而不是继续到进一步的阶段。

以下是其中一个阶段的示例:

stage('Building') {
def result = sh returnStatus: true, script: './build.sh'
if (result != 0) {
echo '[FAILURE] Failed to build'
currentBuild.result = 'FAILURE'
}
}

脚本将失败,构建结果将更新,但作业将继续进行到下一个阶段。发生这种情况时,我如何中止或停止作业?

最佳答案

基本上这就是 sh 步骤的作用。如果您不将结果捕获到变量中,则可以运行:

sh "./build"

如果脚本返回非零退出代码,这将退出。

如果您需要先做一些事情,并且需要捕获结果,您可以使用 shell 步骤来退出作业

stage('Building') {
def result = sh returnStatus: true, script: './build.sh'
if (result != 0) {
echo '[FAILURE] Failed to build'
currentBuild.result = 'FAILURE'
// do more stuff here

// this will terminate the job if result is non-zero
// You don't even have to set the result to FAILURE by hand
sh "exit ${result}"
}
}

但是下面的内容会给你同样的结果,但看起来更明智

stage('Building') {
try {
sh './build.sh'
} finally {
echo '[FAILURE] Failed to build'
}
}

也可以在代码中调用 return 。但是,如果您位于stage内,它只会从该stage返回。所以

stage('Building') {
def result = sh returnStatus: true, script: './build.sh'
if (result != 0) {
echo '[FAILURE] Failed to build'
currentBuild.result = 'FAILURE'
return
}
echo "This will not be displayed"
}
echo "The build will continue executing from here"

不会退出工作,但是

stage('Building') {
def result = sh returnStatus: true, script: './build.sh'
}
if (result != 0) {
echo '[FAILURE] Failed to build'
currentBuild.result = 'FAILURE'
return
}

会的。

关于jenkins - 尽早停止 Jenkins 管道作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40918742/

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