首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有没有办法在带有声明性语法的Jenkinsfile中直接为stage/step使用"propagate=false“?

有没有办法在带有声明性语法的Jenkinsfile中直接为stage/step使用"propagate=false“?
EN

Stack Overflow用户
提问于 2019-04-17 08:23:11
回答 2查看 8.7K关注 0票数 5

您可以在构建作业上使用propagate,如下所述:

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

因此,您可以使用以下内容来防止失败的步骤导致完整的构建失败:

代码语言:javascript
运行
AI代码解释
复制
build(job: 'example-job', propagate: false)

有没有办法把它用在一个阶段或一个步骤上?我知道我可以用try/catch来围绕它,这几乎可以如我所愿地工作。它确实会忽略失败的阶段,并继续构建的其余部分,但它不会将阶段显示为失败。现在,我将所有失败的阶段都写到一个变量中,并在以后的阶段输出,但这并不理想。

如果我不能在阶段/步骤中抑制传播,有没有办法使用build()调用来做同样的事情?也许我可以把它移到另一个管道中,然后通过build()调用它?

感谢您的帮助。

EN

回答 2

Stack Overflow用户

发布于 2019-07-12 12:46:17

使用catchError,您可以防止失败的步骤导致完整的构建失败:

代码语言:javascript
运行
AI代码解释
复制
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将显示为失败:

正如您可能已经猜到的那样,您可以自由选择buildResultstageResult,以防您希望它不稳定或其他任何情况。您甚至可以使构建失败并继续执行管道。

只需确保您的Jenkins是最新的,因为这是一个相当新的功能。

票数 4
EN

Stack Overflow用户

发布于 2019-04-17 09:50:20

目前有很多关于scripted语法的建议,但是关于声明性语法的工作正在进行中以支持这一点。

跟踪https://issues.jenkins-ci.org/browse/JENKINS-26522的进度,它将所有的片段组合在一起来实现这一点。它有一些有趣的位已经标记为“已解决”(意味着代码已更改),例如https://issues.jenkins-ci.org/browse/JENKINS-49764 (“允许为管道阶段定义自定义状态”)。不幸的是,我找不到Jenkins changelog中涉及的任何票据的引用,这是有意义的,因为父票据还没有完成。

令人感兴趣的可能还包括以下内容:由于问题而重新打开的https://issues.jenkins-ci.org/browse/JENKINS-45579。执行此操作的环境为:

诚然,跟踪这项工作的票据数量令人困惑,但这可能是因为所实现的功能具有许多用例。

另一个有趣的标签是"Individual Pipeline steps and stages/blocks should have Result statuses",我找到了一个相关的PR:https://github.com/jenkinsci/workflow-api-plugin/pull/63

值得注意的是,声明性管道总是被设计为固执己见的,因此并不意味着通过脚本语法支持所有可能的东西。对于更复杂的工作流和不能满足您需求的用例,脚本语法可能是唯一的(也是推荐的?)选项。

对于像您所说的那样的需求,如果制造了足够的噪音,声明性管道可能会在适当的时候进行修改以支持它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55723060

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文