Jenkins webbook 在 Bitbucket 中失败,但在 curl 中工作正常

Posted

技术标签:

【中文标题】Jenkins webbook 在 Bitbucket 中失败,但在 curl 中工作正常【英文标题】:Jenkins webook failed in Bitbucket but work fine with curl 【发布时间】:2021-04-22 12:30:00 【问题描述】:

我正在创建 webhook,任何来自 Bitbucket 的 git 推送都会触发 Jenkins 作业在 Linux 主机上运行(无需插件)。

在 jenkins 中,我创建了一个简单的管道,并提出了这个 webhook URL。 http://admin:apiToken@www.myjenkins.com:8080/job/job123/build?token=xxxxxx 我测试了在 CLI 上运行这个 webhook URL,它工作正常,我可以看到新作业在 Jenkins 门户中成功启动。

$ curl -s --show-error http://admin:apiToken@www.myjenkins.com:8080/job/job123/build?token=xxxxxx

但是,此 URL 在 Bitbucket 的 webhook 设置中不起作用 (project > repo > repo settings > webhooks )。我点击了“测试连接”,它返回了403,并带有以下错误响应

Authentication required
<!--
You are authenticated as: anonymous
Groups that you are in:
  
Permission you need to have (but didn't): hudson.model.Hudson.Read
 ... which is implied by: hudson.security.Permission.GenericRead
 ... which is implied by: hudson.model.Hudson.Administer
-->

我使用了admin 帐户,但它显示为“匿名”。

我还测试了git push,但 Jenkins 什么也没发生。 根据错误响应,看起来它与身份验证问题有关......但很奇怪,curl 的命令行工作正常。这意味着:

使用管理员令牌进行身份验证即可。 资源网址正确。

但在 Bitbucket 中同样不起作用。

最后,我测试了在 Jenkins 中启用匿名帐户,Bitbucket 可以触发构建到 Jenkins,但风险太大。 有人对我的问题有想法吗? 谢谢

【问题讨论】:

【参考方案1】:

根据您在 Jenkins 中使用的源代码控制插件,有几种方法可以实现您的目标:

    Bitbucket 服务器集成插件 (https://plugins.jenkins.io/atlassian-bitbucket-server-integration/) 在 Jenkins 主配置页面中配置后

(按照指南),您可以从 Jenkins 作业中选择 -> 推送后的 Bitbucket 服务器触发器构建

当在 Jenkins 中应用/保存时,它将在 Bitbucket 存储库中自动创建一个 Webhook

    Git 插件 (https://plugins.jenkins.io/git/) 在 Job 配置页面中,您可以选择“将更改推送到 BitBucket 时构建”

只有在对存储库具有管理员权限的人使用以下 URL“FULL_JENKINS_URL/bitbucket-hook/”手动创建 webhook 后才会起作用

【讨论】:

以上是关于Jenkins webbook 在 Bitbucket 中失败,但在 curl 中工作正常的主要内容,如果未能解决你的问题,请参考以下文章

javaweb 导出excel需要哪些jar包

Symfony 5,测试条带时得到 403

如何在 Android Studio 中使用 git 分支

Windows下GIT的SSH设置

windows系统下安装pygame

python基础-------模块与包