12

我有一个 Jenkins 工作,它构建与“origin/feature/**”匹配的分支。

每当通过存储库挂钩 ( https://confluence.atlassian.com/display/BITBUCKET/Jenkins+hook+management ) 对存储库进行更改时,Bitbucket 都会触发构建作业。

每当功能分支发生更改时,这都可以正常工作,作业会识别分支已更改并构建它。

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

有没有办法控制这个?

4

4 回答 4

8

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

  • 在您的 Jenkins 上安装Bitbucket 插件
  • 将普通的 Post 作为 Hook 添加到您的 Bitbucket 存储库(Settings -> Hooks)并使用以下 url:

https:// YOUR.JENKINS.SERVER:PORT /bitbucket-hook/

  • 按如下方式配置您的 Jenkins 项目:
    • under build trigger enable将更改推送到 BitBucket 时生成
    • 源代码管理下选择GIT;输入您的凭据并定义要构建的分支(如**feature/*

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

于 2015-01-31T09:56:01.250 回答
0

答案在您链接到的评论部分。Bitbucket 将始终调用您的工作。

您需要在 Jenkins 面前有一个代理来隔离帖子。

https://github.com/oveddan/gitBuildForwarder

如果这是 SVN,我会告诉您如何更改 SVN 挂钩,以便仅根据正则表达式过滤选择性地触发挂钩。

于 2013-10-08T04:34:21.043 回答
0

您可以使用Generic Webhook Trigger Plugin来做到这一点。

  • 将 JSON 有效负载中的分支名称解析为类似reference.
  • 可选过滤器文本可以设置为$reference,过滤器正则表达式设置为^(refs/heads/feature/.+)$
于 2018-05-25T11:18:01.600 回答
0

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

“你是对的,但我想在詹金斯管道工作中做”

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

于 2018-05-09T08:46:11.423 回答