首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅构建已推送到的Git分支

仅构建已推送到的Git分支
EN

Stack Overflow用户
提问于 2014-12-10 22:31:51
回答 6查看 17.5K关注 0票数 29

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

我也希望有一个单独的Jenkins工作,可以在这个存储库中构建任何其他分支。也就是说,每当我将提交推送到一个分支(不是master)时,我希望使用这个Jenkins作业来构建那个分支,并且只构建那个分支。

使用GitHub pull-request插件需要我创建一个pull-request,并将我的提交与master合并。我希望在不创建pull-request的情况下这样做,并且只构建我的提交,而不将其与master合并。

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

在Jenkins中可以做到这一点吗?

EN

回答 6

Stack Overflow用户

发布于 2016-10-06 06:22:48

我也有同样的问题,所以我建立了一个虚拟项目进行实验,并找到了解决方案。结果发现,是的,您只能构建被推入的分支。

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

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

如果你好奇,这是我是怎么弄明白的。

在存储库的设置中,我使用Jenkins https://<jenkin server>/github-webhook/设置了服务钩子“Github plugin”。请注意,至少对我来说,由于某种原因,在按下测试“之后,发送的有效负载的消息从未更改,以确认它已被接收/确认或其他任何东西。也许没有回复。这很让人困惑但不管怎样..。

我创建了一个新的Jenkins作业,并将分支说明符设置为 -which Jenkins,然后自动设置为**

我创建了一个功能分支feature/foo并将其推入其中。

触发了

  • Build 1,但在master上,feature/foo分支上也触发了Build 2。

因此,使用**或空白说明符,无论何时推送到某个repo的所有分支上,插件都会触发这些构建。

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

  • Build 3已在feature/foo分支上触发。
  • 未触发其他生成。

还可以,但这太死板了。这将迫使我们为每个功能分支都有一个构建作业。我想为所有的功能分支使用一个构建任务。

然后,我尝试了一个带有模式refs/heads/feature\*\*的通配符,并将更改推送到feature/foo

  • 未生成。

然后我尝试了分支说明符refs/heads/feature/\*\*并进行了推送。

  • 未生成已激发

然后,我看到在“通配符”部分下的“分支说明符”字段的帮助下显示如下:

语法的形式为:REPOSITORYNAME/BRANCH。此外,BRANCH被识别为*/BRANCH的简写,*被识别为通配符,**被识别为包含分隔符/的通配符。因此,origin/branches*将匹配origin/branches-foo,但不匹配origin/branches/foo,而origin/branches**将同时匹配origin/branches-fooorigin/branches/foo

所以我尝试了origin/feature**

origin/feature/foo.上启动了

  • Build 4

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

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

origin/feature/bar.上启动了

  • Build 5

看起来差不多就在那里。只需要再做几个测试。

然后,我将另一个更改推给了origin/master

激发了

  • No build。太棒了!

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

feature/bar.

  • No other Build上激发了
  • Build 6。

我觉得挺不错的。

票数 13
EN

Stack Overflow用户

发布于 2015-04-01 22:23:27

您可以看到使用Jenkins配置多个分支的插件。使用该方法可以从Jenkins获得任何分支的反馈。

https://wiki.jenkins-ci.org/display/JENKINS/Multi-Branch+Project+Plugin

我希望它能有所帮助。

票数 4
EN

Stack Overflow用户

发布于 2017-09-26 17:24:40

发现Build Trigger部分中列出了whitelist配置:

在这里,您可以指定构建/测试PR将合并到哪个分支。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27403576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档