【问题标题】:POST hook on BitbucketBitbucket 上的 POST 挂钩
【发布时间】:2012-03-17 20:23:04
【问题描述】:

如何在私有 Jenkins 上使用 bitbucket 中的 POST url?

我在bitbucket 及其提交后遇到问题。

说明:

http://username:password@myjenkins.instance/job/myproject/build?token=mytoken

我有一个 jenkins 实例,我想在推送某些存储库时触发。由于 jenkins 可以从外部(万维网)访问,因此它受到典型的用户/密码系统的保护。

使用 Github 时,我可以直接在 URL 中定义用户名和密码。检查 nginx 日志时,很明显 github 能够将该 url 转换为登录用户。 Bitbucket 不是。

这里有一些显示问题的 nginx 日志。

Bitbucket 发布日志:

- - "POST /job/myproject/build?token=mytoken HTTP/1.1" 403 216 "-" "Bitbucket.org"

有趣的部分是 403 错误。访问被拒绝。

Github post hook 的相同日志:

- github - "POST /job/myproject/build?token=mytoken HTTP/1.1" 302 0 "-" "-"

如日志所示,github 是我创建的具有启动构建的良好权限的用户的名称。

我可以做些什么来启用 post hook?

【问题讨论】:

  • 你启用了 csrf 吗?

标签: git github nginx bitbucket githooks


【解决方案1】:

如果您想让 BitBucket 在您的 repo 提交后触发 Jenkins 作业执行,您有两种选择:

  • 使用 POST 挂钩
  • 使用 Jenkins 钩子

两者都使用 Jenkins API 来触发作业。

对于 POST 挂钩,您基本上需要这样构建 url:

https://USER:APITOKEN@JENKINS_URL/job/JOBNAME/build?token=TOKEN

地点:

  • USER:是触发作业的 Jenkins 用户
  • APITOKEN:是与该用户关联的令牌,允许使用 API,您可以从 Jenkins 中的用户配置页面获取它
  • JENKINS_URL:你的 jenkins 服务器的 url
  • JOBNAME:工作名称
  • TOKEN:作业关联的token,必须在作业配置页面添加(开启远程触发)

这很酷的一点是,您可以仅使用控制台中的 curl 来检查它是否有效。

还要注意url中没有密码,你有API TOKEN,这是为了避免公布你的用户名和密码。 如果您在 Jenkins 服务器中拥有管理员权限,您可以采取其他措施来提高安全性,创建一个仅具有读取和构建作业访问权限的新用户,并将其仅用于此目的。因此您不必发布自己的用户和令牌,它们可能具有管理员权限。

Jenkins 钩子的工作方式相同,为您构建相同的 URL,但您没有机会对其进行测试(例如,使用 curl)。

这是基于这些文件:

希望对你有帮助。

德国

【讨论】:

  • 谢谢。这是唯一正确的答案。
  • 请注意,用户至少需要总体:读取和作业:构建和读取权限才能使此调用正常工作。
  • 这不适用于多分支管道作业配置,因为远程触发器不适用于这些配置。
  • 很抱歉听到迈克尔的消息。请记住,这是一个 >6 岁的答案。那时候的事情还没有那么复杂。感谢您指出。
【解决方案2】:

这并不是真正回答您的问题,而是建议另一种方法。 bitbucket.org 和 github.com 都支持 ssh 密钥。

见“Set up SSH for Git”

设置 ssh-agent(在该页面中解释)很重要,因为如果没有这个,您将被要求输入密码短语而不是用户名和密码。

【讨论】:

  • 嗨 cforbish 我们可以使用 node js 在 bitbucket 中自动部署吗?
猜你喜欢
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 2019-05-06
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 2020-05-19
  • 2011-11-27
相关资源
最近更新 更多