我遇到了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?
答案 0 :(得分:11)
如果你想在你的回购中提交后使BitBucket触发Jenkins作业执行,你有两个选择:
两者都使用Jenkins API来触发作业。
对于POST钩子,你基本上需要构建url:
https://USER:APITOKEN@JENKINS_URL/job/JOBNAME/build?token=TOKEN
其中:
关于这一点很酷的是你可以检查它是否只能在控制台中使用curl。
另请注意,网址中没有密码,您可以使用API TOKEN,这是为了避免发布您的用户和密码。 如果您在Jenkins服务器中拥有管理员权限,那么您可以采取其他措施来提高安全性,创建一个只具有读取和构建作业的访问权限的新用户,并仅将其用于此目的。因此,您不必发布自己的用户和令牌,这可能具有管理员权限。
Jenkins钩子以相同的方式工作,为你构建相同的URL,但你没有机会测试它(例如,使用curl)。
这是基于这些文件:
希望它有所帮助。
GER
答案 1 :(得分:2)
这并没有真正回答你的问题,而是建议另一种方法。 bitbucket.org和github.com都支持ssh密钥。
请参阅“Set up SSH for Git”
设置ssh-agent非常重要(在该页面中进行了解释),因为没有这个,您将被要求输入密码而不是用户名和密码。