Bitbucket上的POST钩子

时间:2012-02-28 11:00:27

标签: git github nginx bitbucket githooks

如何在私人Jenkins的bitbucket中使用POST网址?

我遇到了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错误。 Acces拒绝了。

Github帖子钩子的相同日志

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

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

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

2 个答案:

答案 0 :(得分:11)

如果你想在你的回购中提交后使BitBucket触发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服务器的网址
  • JOBNAME :作业名称
  • TOKEN :与作业关联的令牌,您必须将其添加到作业配置页面中(启用远程触发器)

关于这一点很酷的是你可以检查它是否只能在控制台中使用curl。

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

Jenkins钩子以相同的方式工作,为你构建相同的URL,但你没有机会测试它(例如,使用curl)。

这是基于这些文件:

希望它有所帮助。

GER

答案 1 :(得分:2)

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

请参阅“Set up SSH for Git

设置ssh-agent非常重要(在该页面中进行了解释),因为没有这个,您将被要求输入密码而不是用户名和密码。