首页 > 解决方案 > Jenkins:当上游被中止时如何停止下游项目

问题描述

我在 Jenkins 中有一个上游项目,它使用“触发器/调用在其他项目上构建”插件依次调用一些下游项目。

当我执行上游项目的中止时,如何自动中止任何下游项目的构建?

如果上游被中止,下游仍在运行,我想要不同的行为。

谢谢。

标签: jenkinsjenkins-pipelinejenkins-plugins

解决方案


正如我的评论中提到的,您可以让下游作业监听上游作业,而不是让上游作业触发下游作业。当涉及到参数时,可以使用以下 groovy 代码示例来检索它们:

def up_stream_cause = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause)

if (up_stream_cause != null ) {
    def up_stream_run = up_stream_cause.upstreamRun
    def parameters_action = up_stream_run.getAction(ParametersAction)
    def parameters = parameters_action.getParameters()
}

或者,您当然可以使用以下 groovy 代码在上游构建期间简单地构建下游构建:

build job: 'job_name',
parameters: [
    [
        $class: 'StringParameterValue', name: 'parameter',
        value: 'value'
    ]
]

这两种解决方案都允许您在上游构建失败、中止或不稳定时不触发下游构建。


推荐阅读