BitBucket Jenkins不会自动构建

use*_*911 25 bitbucket jenkins

我的詹金斯配置:

源代码管理

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

凭证:用户名/密码

生成器触发器

将更改推送到BitBucket时构建

在我的BitBucket Webhooks上:

HTTP://Jenkins.URL:8080 /到位桶钩

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

可能是什么问题呢?

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

编辑:

在Jenkins的系统日志中,它显示"轮询还没有运行.".但在Bitbucket Webhook请求日志中,我可以看到所有请求.

Hau*_*son 36

您无需启用轮询SCM ..

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

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

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

  • 这应该是公认的答案,这样的细节很容易被忽视. (5认同)
  • 在Jenkins版本2.148上对我不起作用,即使最后使用`/`: (3认同)
  • 我希望在没有 Poll SCM 选项的情况下也能正常工作,但是当我尝试 @Haukur 的建议时,我收到了 404 错误。除了 Bitbucket 插件之外,Jenkins 端是否还需要启用其他功能?当我将 Poll SCM 选项与“将更改推送到 BitBucket 时构建”结合使用时,它确实对我有用。谢谢。 (2认同)

Jez*_*zor 9

在对 BitBucket 插件进行了一些努力之后,我设法让它工作了。以下是我发现触发构建所必需的内容摘要,但从插件的文档中并不明显:

  1. 确保您的 webhook 已repository push启用触发器。我认为pull request created/updated就足够了(建立在 PR 上是我想要的)但该插件仅对push.
  2. 将您的存储库 URL(在 Git 插件中)设置为https://bitbucket.org/REPOSITORY_OWNER/REPOSITORY_NAME. 如果是 SSH url,插件将不匹配。
  3. 确实需要启用 SCM 轮询。插件本身不会拉动更改。您可以将 schedule 字段留空,以便仅在插件触发时轮询存储库。

我希望这有帮助。如果仍未为您触发构建,请尝试为以下类启用日志

  • 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

  • 根据我的经验,不需要 SCM 轮询,但您必须手动进行第一次构建。 (2认同)

gar*_*les 0

正如@Adrian 提到的,您仍然需要选择“投票 SCM”。这有点不直观,但是当 BitBucket Webhook 向 Jenkins 发送请求时,Jenkins 将轮询引用发生更改的 BitBucket 存储库的所有作业的更改。您可以为轮询设置较长的时间间隔,例如@monthly,因为您不需要Jenkins的调度来触发轮询;一旦发生更改,网络挂钩就会处理该问题。

  • 无论如何,这不是每分钟轮询一次吗?Bitbucket 推送触发器有什么意义? (38认同)
  • 正如 @AlastairBrayne 提到的,webhook 是为了避免存储库轮询。如果您没有指定计划,Jenkins 会说“没有计划,因此只有在提交后挂钩触发时才会因 SCM 更改而运行”。无论 SCM 是否启用,构建都不会为我触发(Jenkins 版本 2.148) (2认同)