gpt4 book ai didi

git - 仅构建已推送到的 Git 分支

转载 作者:IT王子 更新时间:2023-10-29 01:15:53 27 4
gpt4 key购买 nike

我有一个 Jenkins 工作来构建我的 GitHub 存储库的 master 分支。当我将提交推送到 master 时,它会很好地触发,我对此感到非常高兴。

我还希望有一个 Jenkins 作业可以在此存储库中构建任何其他分支。 IE。每当我将提交推送到一个分支(不是 master)时,我都希望有这个 Jenkins 作业来构建该分支,并且只构建该分支。

使用 GitHub pull 请求插件需要我创建一个 pull 请求,并将我的提交与 master merge 。我想这样做而不必创建 pull 请求,并且只构建我的提交而不将其与 master merge 。

设置 Git 插件来构建所有分支意味着每当我推送到 master 时,所有分支都会被构建。我只想构建一个已修改的分支。

这在 Jenkins 中可行吗?

最佳答案

我遇到了同样的问题,所以我设置了一个虚拟项目进行试验并找到了解决方案。并且发现是的,您可以仅构建已被 push 的分支。

简短的回答是使用“分支说明符”。例如origin/feature** .

如果您使用的是 GitFlow并且所有功能分支都以 feature/ 命名前缀,那么这就是解决方案。

如果你很好奇,我是如何想出来的。

在存储库的设置中,我使用 Jenkins Hook 设置服务 “Github 插件” https://<jenkin server>/github-webhook/ .请注意,至少对我来说发生的事情是,由于某种原因在按下 “测试” 后,发送的有效负载消息从未更改以确认它已被接收/确认或任何东西。也许没有回复。这令人困惑,但无论如何......

我创建了一个新的 Jenkins 作业并将 branch specifier 设置为 blank - Jenkins 然后会自动设置至 ** .

我创建了一个特性分支 feature/foo并 push 其中。

  • Build 1 被解雇,但在 master分支机构。
  • Build 2 也在 feature/foo 上启动分支机构。

看来 **或空白说明符,只要有推送到它们中的任何,插件就会在 repo 的所有分支上触发构建。

然后我尝试使用模式 refs/heads/feature/foo并将另一个更改推送到 feature/foo分支机构。

  • Build 3 在 feature/foo 上启动分支机构。
  • 没有其他构建被解雇。

还可以,但是太死板了。这将迫使我们为每个功能分支创建一个构建作业。我想要为所有 功能分支创建一个构建作业。

然后我尝试使用模式为 refs/heads/feature\*\* 的通配符并将更改推送到 feature/foo .

  • 没有构建被触发。

然后我尝试了分支说明符 refs/heads/feature/\*\*并 push 。

  • 没有构建被触发

然后我看到“Branch Specifier” 字段的帮助在“通配符”部分下读取此内容:

The syntax is of the form: REPOSITORYNAME/BRANCH. In addition, BRANCH is recognized as a shorthand of */BRANCH, * is recognized as a wildcard, and ** is recognized as wildcard that includes the separator /. Therefore, origin/branches* would match origin/branches-foo but not origin/branches/foo, while origin/branches** would match both origin/branches-foo and origin/branches/foo.

所以我尝试了origin/feature**

  • Build 4 于 origin/feature/foo 启动.

Eureka !似乎您不能对引用使用通配符(以 refs/ 开头),但您可以使用实际分支的名称(以 origin/ 开头)。

然后我创建了分支 feature/bar并推向它。验证是否只构建这个分支,而不是其他以 feature/ 开头的分支.

  • Build 5 于 origin/feature/bar 启动.

看的差不多了。只需要再进行一些测试。

然后我将另一个更改推送到 origin/master

  • 没有构建被触发。太棒了!

然后我将另一个更改推送到 feature/bar , 以测试是否只构建此分支。尽管 origin/master也被 push 了。

  • Build 6 于 feature/bar 启动.
  • 没有触发其他构建。

我觉得不错。

关于git - 仅构建已推送到的 Git 分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27403576/

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