如何设置 Jenkins 多分支管道作业仅在触发作业成功时由另一个多分支作业触发

时间:2021-07-06 22:18:23

标签: jenkins gitlab continuous-integration jenkins-pipeline multibranch-pipeline

情况如下:

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

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

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

Jenkins: Trigger Multi-branch pipeline on upstream change - 使用 "../JOB A FOLDER/JOB A/" + env.BRANCH_NAME.replaceAll("/", "%2F") 所以作业由所有分支触发

Jenkins Pipeline: How to build job build after multibranch project is built?

Triggering a multibranch pipeline job from an other multibranch pipeline - 周围有属性([])

我尝试了 JOB A 的绝对路径和相对路径,我在“进程中脚本批准”页面中批准了“staticField hudson.model.Result 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 B 在 repo 中的新提交后被触发不管 JOB A 是否成功完成,它甚至不等待 JOB A 完成并且 JOB B 开始之前JOB A 已完成,JOB B 日志中没有错误。我试过的 JOB A 的路径是正确的。

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

0 个答案:

没有答案