Bitbucket Webhook触发Jenkins任务

5

我在Bitbucket服务器上无法启动Jenkins作业的Webhook。我已经阅读了这里其他回答的问题,但还是无法使用。

Bitbucket设置:

  • 没有安装特殊插件
  • 在存储库设置中,我设置了一个Webhook
  • URL:http://[my jenkins url]/bitbucket-hook/(是的,我有尾随斜杠)
  • 选择Repo Push事件

Jenkins设置:

  • 安装了Bitbucket插件
  • 创建了新作业
  • 将SCM设置为Git并添加了存储库详细信息
  • 将分支构建为**或refs/heads/rob-jenkins(git中的一个分支)
  • 当更改被推送到Bitbucket时进行构建

我的操作:我更改了rob-jenkins分支中的文件,然后推送,但Jenkins作业未启动。

我的观察结果:在Bitbucket中,存储库设置,Webhooks中,我可以看到Webhook在提交推送后立即触发。它具有200个HTTP状态代码,响应正文为空。

在 Jenkins 中,我已经设置了一个记录器。
com.cloudbees.jenkins.plugins.BitbucketHookReceiver
com.cloudbees.jenkins.plugins.BitbucketJobProbe
com.cloudbees.jenkins.plugins.BitbucketPayloadProcessor
com.cloudbees.jenkins.plugins.BitBucketTrigger

当我查看这些日志时,我只能看到来自com.cloudbees.jenkins.plugins.BitbucketHookReceiver的1个条目

Received commit hook notification : {"eventKey":"repo:refs_changed","date":"2018-05-22T12:18:11+1000","actor":{"name":"xxxxxx","emailAddress":"xxxxxx@xxxxxx.com","id":53,"displayName":"xxxxxx","active":true,"slug":"xxxxxxx","type":"NORMAL"},"repository":{"slug":"xxxxx","id":1,"name":"xxxxx","scmId":"git","state":"AVAILABLE","statusMessage":"Available","forkable":true,"project":{"key":"SS","id":2,"name":"xxxxx","description":"xxxxxx","public":false,"type":"NORMAL"},"public":false},"changes":[{"ref":{"id":"refs/heads/rob-jenkins","displayId":"rob-jenkins","type":"BRANCH"},"refId":"refs/heads/rob-jenkins","fromHash":"1d9ad42fa404c893853094b0072e5b839f787589","toHash":"9bf7dc873f355259e4338ee80afbd246ecbb48a9","type":"UPDATE"}]}

日志中没有其他条目。

在作业本身中,BitBucket Hook Log屏幕只显示“尚未运行轮询”。

不知道为什么它没有触发Jenkins作业...我错过了什么?

  • 我尝试手动设置Poll SCM,但没有任何区别。
  • 我进行了手动构建,它正常工作。

我建议使用这个插件代替:https://github.com/jenkinsci/generic-webhook-trigger-plugin/ - Tomas Bjerre
谢谢Tomas!那个插件似乎运行良好...不确定为什么另一个插件无法工作。 - Rob Ormond
2个回答

3

正如@tomas-bjerre所评论的那样,解决办法是使用不同的插件

我建议使用这个插件代替: github.com/jenkinsci/generic-webhook-trigger-plugin – Tomas Bjerre 昨天


2
那么为什么BitBucket webhook没有触发Bitbucket插件还没有答案?我之前一直都能正常使用,但现在它因为某些未知的原因停止了工作。我不想更换插件。 - Mike

3
不需要插件。只需在Bitbucket存储库下添加一个post-recieve钩子。在Jenkins中,选择“Build Triggers”,选择“远程触发构建”(例如,从脚本),并指定一个认证令牌。可以使用bash或python脚本进行钩子操作。每当运行git push(而不仅仅是提交)时,都会触发构建!

#!/usr/bin/python import sys from subprocess import call print "在主分支或开发分支上启动后置接收钩子..." sys.stdout.flush()if name == 'main': for line in sys.stdin.xreadlines(): old, new, ref = line.strip().split(' ') if ref == 'refs/heads/master' or ref == 'refs/heads/dev': print "正在推送,触发Jenkins构建。" print "===================================" sys.stdout.flush() call(["curl", "-ik", "http://jenkins.company.com:9080/job/${JOB_NAME}/build?token=xyz8a5bc77cdf631845a4e1c2e4d7153"]) - venky
你能提供一些教程的链接吗?我发现 Jenkins 文档中这个特定领域缺乏(至少可以这么说) - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接