如果Jenkins在从bitbucket触发时发生了变化,我怎么能让Jenkins只构建功能分支

时间:2013-09-25 11:00:03

标签: git jenkins continuous-integration branch bitbucket

我有一个Jenkins工作,建立与“origin / feature /**”。

匹配的分支

只要存储库挂钩(https://confluence.atlassian.com/display/BITBUCKET/Jenkins+hook+management)对存储库进行了更改,Bitbucket就会触发构建作业。

只要功能分支发生更改,此工作就会正常工作,作业会识别出分支已更改并构建它。

但是,当提交非功能分支(例如,合并开发或主控)时,bitbucket仍会触发该作业。任何功能分支都没有更改,因此它只是再次构建最后构建的功能分支。

有没有办法控制这个?

4 个答案:

答案 0 :(得分:8)

经过一番研究,我终于找到了一个很好的解决方案:

  • 在Jenkins安装Bitbucket Plugin
  • 将正常的帖子作为Hook添加到您的Bitbucket存储库(设置 - > Hooks )并使用以下网址:
  

的https:// YOUR.JENKINS.SERVER:PORT /到位桶挂机/

  • 按如下方式配置Jenkins项目:
    • 构建触发器下启用在将更改推送到BitBucket时构建
    • 源代码管理下选择 GIT ;输入您的凭据并定义要构建的分支(例如 ** feature / *

通过这种方式,我有三个构建项目,一个用于所有功能,一个用于开发,一个用于发布分支。

答案 1 :(得分:0)

答案在您链接的评论部分。 Bitbucket总是会为你的工作打电话。

你需要Jenkins面前的代理来隔离帖子。

https://github.com/oveddan/gitBuildForwarder

如果这是SVN,我会告诉你如何改变SVN钩子只能根据Regex过滤选择性地触发钩子。

答案 2 :(得分:0)

由于我无法回答评论顶部(为什么)

"你是对的,但我想在jenkins管道工作"

为了让一个管道作业在推送后自动构建(每个钩子),我创建了另一个被配置为由bitbucket / git触发的作业,并且有一个指向管道作业的后续作业生成后行动。这是我可以管理这个的唯一方法

答案 3 :(得分:0)

您可以使用Generic Webhook Trigger Plugin执行此操作。

  • 将分支名称从JSON有效内容解析为reference等变量。
  • 可选的过滤器文字可以设置为$reference,过滤器正则表达式设置为^(refs/heads/feature/.+)$