BitBucket Jenkins 不会自动构建

BitBucket Jenkins doesn't automatically build

在我的 Jenkins 上我配置了:

源代码管理

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

凭据:username/password

生成器触发器

将更改推送到 BitBucket 时构建

在我的 BitBucket Webhooks 上:

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

我尝试将一个小的更改推送到 .txt 文件,但 Jenken 不会自动构建。如果我手动点击"build now",显示成功

可能是什么问题?

在bitbucket仓库中,项目比较简单。我只有一个文本文件要测试。我认为只要我对文本文件进行任何更改,它就会触发 Jenkins 构建。

编辑:

在Jenkins的系统日志中,显示"Polling has not run yet."。但是在 Bitbucket Webhook 请求日志中,我可以看到所有的请求。

您是否标记了复选框:轮询 SCM?还要确保您安排了一个短时间来尽快检测存储库中的更改。

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

正如@Adrian 提到的,您仍然需要 select "Poll SCM"。这有点不直观,但是当 BitBucket webhook 向 Jenkins 发送请求时,Jenkins 将轮询所有引用发生更改的 BitBucket 存储库的作业的更改。您可以为轮询设置较长的时间间隔,例如@monthly,因为你不需要 Jenkins 的调度来触发轮询;网络挂钩将在进行更改后立即处理。

您不需要启用轮询 SCM..

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

注意最后一个“/”,没有它,构建将不会被触发。

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

我也在做同样的事情,但我的 Jenkins 中没有 Bitbucket Plugin

我在我的 Bitbucket 中使用 Jenkins Plugin。我已经在每个存储库上配置了 webhook,并指向简单的 Jenkins URL。 然后,在我需要的每项工作中,只需检查 "Poll SCM" with/without 时间表(不是必需的)。

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

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

documentation:

中的这一行让我感到震惊

If the job's SCM (git) detects that the remote repository has changes, THEN

在那之后,webhook 工作得很好。

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

如果未检测到任何更改,Bitbucket 的 Jenkins 插件将不会启动作业。 您可以添加多个要观看的分支。

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

因此,如果您将分支说明符保留为默认值 */master 并且您正在推送到不同的分支,那么该作业将不会执行。

  1. 转到 https://bitbucket.org
  2. 上的项目页面
  3. 设置 -> Webhook -> 点击 "Add webhook"
  4. 添加https://yourjenkinsserver.com/bitbucket-hook/
  5. 再推

这需要您的 Jenkisserver 有 bitbucket 插件。转到 https://yourjenkinsserver.com/bitbucket-hook/ 检查它 - 它会崩溃,但你会知道你安装了它。

在带有 Bitbucket 插件的 Jenkins 2.138.1 上遇到了同样的问题,问题是我必须启用 "Source Code Management" -> git,否则尽管出现了 webhook,它也不会做任何事情在 Jenkins 的日志中 (/var/log/jenkins/jenkins.log).

在尝试使用 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 url.
  3. ,插件将不会匹配它
  4. 需要启用 SCM 轮询。插件本身不会提取更改。您可以将计划字段留空,这样只有在插件触发时才会轮询存储库。

希望对您有所帮助。如果仍然没有为您触发构建,请尝试 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

我在这个问题上苦苦挣扎了很长时间,在 Jenkins 文档中找不到解决方案,我在 Cloudbees 支持网站上找到了 here 解决方案。

您只需要将这些两个 webhook 添加到您的 bitbucket 存储库中即可:

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

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

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

艾达

对于像我这样刚接触 jenkinsCI\CD 的人:


我们应该为每个要自动构建的存储库单独添加 webhooks。

我正在尝试构建 一个项目,我将 jenkins url 作为 webhook 添加到 另一个项目 并且误以为 webhook 对一个 bitbucket 账户下的所有项目都是通用的。但事实并非如此。有时很容易被忽视的好小东西。

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

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

还要确保 webhook url 的格式正确并且末尾有“/”:

{JenkinsURL}/bitbucket-hook/

在我的例子中,这是通过将 Bitbucket 的分支选项(高级配置)设置为 Jenkins Webhook 来解​​决的 "Build All"。

我支持这里的声明,即我们不需要 "Build when a change is pushed to BitBucket" 的 POLL SCM 选项,但我们需要确保在 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

希望对您有所帮助!

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