情况如下:
在工作项目中,我们有一个 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