gpt4 book ai didi

jenkins - 有没有办法在 Jenkinsfile 中直接使用声明性语法的 "propagate=false"进行阶段/步骤?

转载 作者:行者123 更新时间:2023-12-02 20:58:26 26 4
gpt4 key购买 nike

您可以按照此处所述在构建作业上使用传播:

https://jenkins.io/doc/pipeline/steps/pipeline-build-step/

因此,您可以使用类似的方法来防止失败的步骤导致整个构建失败:

build(job: 'example-job', propagate: false)

有没有办法将其用于阶段或步骤?我知道我可以用 try/catch 包围它,这几乎可以按照我想要的方式工作。它确实会忽略失败的阶段并恢复构建的其余部分,但不会将阶段显示为失败。现在我将所有失败的阶段写入一个变量并在稍后的阶段输出,但这并不理想。

如果我无法抑制阶段/步骤中的传播,是否有办法使用 build() 调用来执行相同的操作?也许如果我将它移动到另一个管道并通过 build() 调用它?

感谢任何帮助。

最佳答案

使用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 是最新的,因为这是一个相当新的功能。

关于jenkins - 有没有办法在 Jenkinsfile 中直接使用声明性语法的 "propagate=false"进行阶段/步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55723060/

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