gpt4 book ai didi

Jenkins:在上游更改上触发多分支管道

转载 作者:行者123 更新时间:2023-12-01 23:42:42 24 4
gpt4 key购买 nike

我目前正在测试 Jenkins 2.0 的管道方法,看看它是否适用于我正在使用的构建环境。

首先是环境本身。它目前由多个 SCM 存储库组成。每个存储库包含多个分支,用于开发的不同阶段,并且每个分支都使用多种配置构建。并非所有配置都适用于每个存储库。

当前每个存储库/分支都设置为 Matrix Project对于不同的配置。每个项目都将其构建结果公开为工件,并且这些工件在下游项目中使用。

不同的存储库相互依赖,因此上游作业的成功构建会触发一些特定的下游作业。目前所有这些都有效,但是设置新分支或调整构建过程所需的工作量很大,因为许多不同的项目需要手动更改。

现在我想尝试一下新的管道。我的想法是创建多分支管道项目,并将 Jenkinsfile 放置在包含构建说明的存储库中。

主要问题是让构建相互触发,因为基本上特定上游分支中的构建需要触发下游分支。然而上游项目并不知道需要触发哪些下游分支的信息。每个下游项目都会从某些上游分支获取工件,理想的解决方案是,如果作为工件源的上游构建完成其构建,则触发下游构建。

问题是只有下游项目真正知道他们需要什么工件。在大多数情况下,分支名称不太可能匹配,这使得从上游项目触发构建非常困难。

目前,这个问题可以通过 ReverseBuildTrigger 解决。 。但是这个东西一旦靠近管道就会停止工作。

我真的不知道如何让它发挥作用。有什么办法可以得到像 ReverseBuildTrigger 这样的东西吗?在管道脚本内工作?

在单个上游分支发生更改的情况下,也不能选择触发所有分支的整个下游构建。这会创建太多相同的构建。

最佳答案

如果您使用 declarative multi-branch pipeline ,您可以使用:

triggers {
upstream(upstreamProjects: "some_project/some_branch", threshold: hudson.model.Result.SUCCESS)
}

如果您希望跨依赖项进行分支匹配,您可以使用:

triggers {
upstream(upstreamProjects: "some_project/" + env.BRANCH_NAME.replaceAll("/", "%2F"), threshold: hudson.model.Result.SUCCESS)
}

关于Jenkins:在上游更改上触发多分支管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36825103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com