git - Jenkins webbook 在 Bitbucket 中失败,但在 curl 中工作正常
问题描述
我正在创建 webhook,任何来自 Bitbucket 的 git push 都会触发 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
,詹金斯什么也没发生。根据错误响应,看起来它与身份验证问题有关......但很奇怪,命令行curl
工作正常。这意味着:
- 使用管理员令牌进行身份验证很好。
- 资源 URL 正确。
但是这在 Bitbucket 中不起作用。
最后,我测试了在 Jenkins 中启用匿名帐户,Bitbucket 可以触发构建到 Jenkins 但风险太大。有人对我的问题有想法吗?谢谢
解决方案
根据您在 Jenkins 中使用的源代码控制插件,有几种方法可以实现您的目标:
- Bitbucket 服务器集成插件 ( https://plugins.jenkins.io/atlassian-bitbucket-server-integration/ ) 在 Jenkins 主配置页面中配置后
(按照指南),您可以从 Jenkins 作业中选择 - > Bitbucket 服务器触发器构建后推送
当在 Jenkins 中应用/保存时,它将在 Bitbucket 存储库中自动创建一个 Webhook
- Git 插件 ( https://plugins.jenkins.io/git/ ) 在作业配置页面中,您可以选择“将更改推送到 BitBucket 时构建”
仅在对存储库具有管理员权限的人使用以下 URL“ {FULL_JENKINS_URL}/bitbucket-hook/
”手动创建 webhook 后才有效
推荐阅读
- c# - 从应用商店下载时,Xamarin.iOS 应用在使用 iPhone5 启动时崩溃。DYLD,库未加载错误。-+
- symfony - Symfony 4 学说即使在开发环境中也使用缓存
- java - 扫描文本文件时出现 NetBeans 错误
- dart - Dart 中的 this[x] 等价于什么?
- .htaccess - Apache 重定向指令不作为最终规则
- ios - 无法以编程方式在 TableView 中自动滚动到特定部分
- amazon-web-services - AWS EventBridge 规则触发两次
- php - .htaccess url 重写一夜之间失败
- karate - 使用 0.9.5.RC4 的 Karate.toMap() 适用于场景,但不适用于场景大纲
- firebase - 在 Firestore 规则中引用变量