首页 > 解决方案 > 仅当触发作业成功时,如何将 Jenkins 多分支管道作业设置为由另一个多分支作业触发

问题描述

情况如下:

在工作项目中,我们有一个 Jenkins 多分支管道作业(又名“JOB A”)使用构建配置模式扫描 Gitlab 存储库(又名“REPO”):通过 Jenkinsfile,如果任何分支有新提交,则该作业将在该分支,执行单元测试等。

我想要实现的是当 JOB A 成功完成(任何分支)时,应该触发另一个多分支管道作业(“JOB B”,也由 REPO 中的另一个 Jenkinsfile 定义),检查 REPO(相应的分支) ,构建软件并在其上运行 UI 测试。这个问题只涉及适当的触发部分,软件构建和测试很好。最好在已触发的作业中进行触发的配置。

我已经尝试了在 JOB B 的 Jenkinsfile 开头定义上游触发器的多种变体 - 来自以下问题/答案的变体:

Jenkins:在上游更改时触发多分支管道- 使用“../JOB A FOLDER/JOB A/”+ env.BRANCH_NAME.replaceAll(“/”,“%2F”),所以作业由所有分支触发

Jenkins Pipeline:构建多分支项目后如何构建作业?

从其他多分支管道触发多分支管道作业- 周围有 properties([])

我已经尝试了 JOB A 的绝对路径和相对路径,我在“In-process Script Approval”页面中批准了“staticField hudson.model.Result SUCCESS”字段以及来自链接问题中的评论的其他建议。我也只尝试过“SUCCESS”而不是“hudson.model.Result.SUCCESS”。

我期望的工作是这样的:

properties([
    pipelineTriggers([
        upstream(
                upstreamProjects: "../JOB A FOLDER/JOB A/" + env.BRANCH_NAME.replaceAll("/", "%2F"), threshold: hudson.model.Result.SUCCESS
        )
    ])
])

但是相反,无论JOB A 是否成功完成,在 repo 中的新提交后都会触发 JOB B ,它甚至不等待 JOB A 完成并且 JOB B 在 JOB A 完成之前启动,在 JOB B 中没有错误日志。JOB AI 尝试的路径是正确的。

詹金斯版 2.222.1 管道:多分支 2.21 管道 2.6 管道:作业 2.38

标签: jenkinsgitlabcontinuous-integrationjenkins-pipelinemultibranch-pipeline

解决方案


推荐阅读