BitBucket Jenkins不会自动构建

时间:2015-07-03 08:41:56

标签: jenkins bitbucket

在我配置的詹金斯上:

源代码管理

Git存储库:https://bitbucket.org/username/project.git

凭据:用户名/密码

构建器触发器

将更改推送到BitBucket时构建

在我的BitBucket Webhooks上:

http://Jenkins.URL:8080/bitbucket-hook

我尝试将一个小更改推送到.txt文件,但Jenken不会自动构建。如果我手动点击“立即构建”,它会显示成功。

可能是什么问题?

在bitbucket存储库中,项目很简单。我只有一个文本文件来测试。我想只要我对文本文件做了任何更改,就应该触发Jenkins构建。

编辑:

在Jenkins的系统日志中,它显示“轮询尚未运行。”。但是在Bitbucket Webhook请求日志中,我可以看到所有请求。

15 个答案:

答案 0 :(得分:35)

您不需要启用轮询SCM ..

您必须确保您的Webhook(设置 - > Webhooks)指向您的Jenkins bitbucket-hook,如下所示:" https://ci.yourorg.com/bitbucket-hook/"。

请注意,最后" /",如果没有它,将不会触发构建。

这是一件令人讨厌的事情,因为无论是否有发送请求,您都会从Jenkins获得200状态代码。

答案 1 :(得分:3)

您是否将复选框标记为:Poll SCM?另外,请确保您安排在短时间内尽快检测存储库中的更改。

也许你的问题是你安排了很长时间,并且在推动Jenkins等待一段时间来检测变化之后。

答案 2 :(得分:2)

使用Jenkins 2.53和Bitbucket插件1.1.5,我必须首先手动触发构建以使webhook工作。

让我感到惊讶的是documentation

中的这一行
  

如果作业的SCM(git)检测到远程存储库已更改,那么

之后webhook工作得很好。

答案 3 :(得分:1)

  1. 转到https://bitbucket.org
  2. 上的项目页面
  3. 设置 - > Webhook - >点击“添加webhook”
  4. 添加https://yourjenkinsserver.com/bitbucket-hook/
  5. 再次推送
  6. 这需要您的Jenkisserver拥有the bitbucket plugin。通过转到https://yourjenkinsserver.com/bitbucket-hook/来检查它 - 它会崩溃,但你会知道你安装了它。

答案 4 :(得分:1)

在使用BitBucket插件苦苦挣扎之后,我设法使其正常运行。 以下是我发现触发构建所必需的内容的摘要,但从插件的文档中看不出来:

  1. 确保您的Webhook启用了repository push触发器。我以为pull request created / updated就足够了(我想要的是建立PR),但是the plugin reacts only to push就足够了。
  2. 将您的存储库URL(在Git插件中)设置为https://bitbucket.org/REPOSITORY_OWNER/REPOSITORY_NAME。如果是SSH网址,则插件将与之不匹配。
  3. 这样做需要启用SCM轮询。插件本身不会提取更改。您可以将schedule字段保留为空,以便仅在插件触发存储库时才轮询存储库。

我希望这会有所帮助。如果仍然没有为您触发构建,请尝试enabling logs进行以下课程:

  • com.cloudbees.jenkins.plugins.BitbucketHookReceiver
  • com.cloudbees.jenkins.plugins.BitBucketTrigger
  • com.cloudbees.jenkins.plugins.BitbucketJobProbe
  • com.cloudbees.jenkins.plugins.BitbucketPayloadProcessor
  • com.cloudbees.jenkins.plugins.bitbucket.BitbucketSCMSource

答案 5 :(得分:0)

我正在做同样的事情,但我的詹金斯没有Bitbucket Plugin

我在我的Bitbucket中使用Jenkins Plugin。我已经在每个存储库上配置了webhook,并使用简单的Jenkins URL进行指向。 然后,在我需要的每个工作中,只需选中“有/没有时间表”的“轮询SCM”(不需要)。

这样做非常好,我在Jenkins中避免了另一个插件安装。

答案 6 :(得分:0)

你必须注意 分支说明符字段并指定您要推送的分支

如果没有检测到任何更改,Bitbucket的Jenkins插件将无法启动作业。 你可以添加多个分支来观看。

仅限官方文档提及如果作业的SCM(git)检测到远程存储库已更改,那么它将调用构建。

因此,如果您将分支说明符保留为其默认值* / master,并且您要推送到其他分支,则不会执行该作业。

答案 7 :(得分:0)

使用Bitbucket插件在Jenkins 2.138.1上发生了相同的问题,问题是我必须启用“源代码管理”-> git,否则尽管Webhook出现在Jenkins的日志中(/ var /log/jenkins/jenkins.log)。

答案 8 :(得分:0)

对于像jenkinsCI\CD一样陌生的像我这样的人:


我们应该为我们要自动构建的每个存储库分别添加webhook

我正在尝试构建一个项目,然后我将jenkins url作为webhook添加到了另一个项目中,并错误地认为{{1} }对于使用bitbucket帐户的所有项目都是通用的。但是事实并非如此。一件好事,有时容易被忽视。

我还使用了webhook而不是Build when a change is pushed to BitBucket的选项,其他答案建议我们应该使用它,但是Poll SCM选项对我有用。

答案 9 :(得分:0)

我也遇到了这个问题,并通过更新jenkins中的bitbucket插件来解决:

enter image description here

还要确保webhook网址的格式正确,并在末尾添加“ /”:

{JenkinsURL} / bitbucket-hook /

答案 10 :(得分:0)

就我而言,这是通过将Bitbucket的“分支选项”(高级配置)设置为“ Jenkins Webhook”设置为“全部构建”来解决的。

答案 11 :(得分:0)

如果您尝试在 Bitbucket Cloud 中使用 webhook,并且尝试在 AWS EC2 中托管的 Jenkins 中触发构建,则应将来自 Bitbucket 的传出 IP 地址添加到您的安全组。 https://support.atlassian.com/organization-administration/docs/ip-addresses-and-domains-for-atlassian-cloud-products/

答案 12 :(得分:-1)

正如@Adrian所说,你仍然需要选择“Poll SCM”。这有点不直观,但是当BitBucket webhook向Jenkins发送请求时,Jenkins将轮询所有引用BitBucket repo所做作业的作业的更改。您可以为投票设置较长的时间间隔,例如@monthly,因为你不需要Jenkins的调度来触发轮询;一旦做出改变,网络钩子就会处理这个问题。

答案 13 :(得分:-1)

我一直在为此问题苦苦挣扎,并且在Jenkins文档中找不到解决方案,我在Cloudbees支持站点找到了here解决方案。

您只需要将以下两个webhooks添加到您的Bitbucket存储库中即可:

https://JENKIN_URL/bitbucket-scmsource-hook/notify
https://JENKIN_URL/bitbucket-hook

我为所有管道甚至多分支管道工作。

希望这对某人有所帮助;)

ADA

答案 14 :(得分:-1)

我在这里第二次声明说,我们不需要POLL SCM选项和“将更改推送到BitBucket时进行构建”,但是我们需要确保在Bit bucket中创建的webhook是正确的。

我在BitBucket中使用的设置是: 存储库设置-> Webhooks

 1. Title: <Anything>
 2. URL: https://jenkins_server_ip:8443/bitbucket-hook/
 3. Status: (Tick) Active
 4. SSL / TLS: (Tick) Skip certificate verification (Not ticking this was causing no auto-trigger in my case)
 5. Request History: (Untick) Enable request history collection
 6. Triggers : (Tick) Repository push

希望这会有所帮助!