Git 斗杆钩 如何在private Jenkins上使用bitbucket中的POST url?

Git 斗杆钩 如何在private Jenkins上使用bitbucket中的POST url?,git,github,nginx,bitbucket,githooks,Git,Github,Nginx,Bitbucket,Githooks,我一直遇到问题和他们的后提交 说明: http://username:password@myjenkins.instance/job/myproject/build?token=mytoken 我有一个jenkins实例,我想在推送某些存储库时触发它。由于jenkins可以从外部(万维网)访问,因此它通过典型的用户/密码系统进行保护 使用Github时,我可以直接在URL中定义usename和密码。在检查nginx日志时,很明显github能够将该url转换为登录用户。比特桶不是 下面是一些显示

我一直遇到问题和他们的后提交

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

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

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

下面是一些显示问题的nginx日志

比特桶日志:

- - "POST /job/myproject/build?token=mytoken HTTP/1.1" 403 216 "-" "Bitbucket.org"
有趣的是403错误。拒绝访问

Github post钩子的日志相同

- github - "POST /job/myproject/build?token=mytoken HTTP/1.1" 302 0 "-" "-"
正如日志所示,github是我创建的具有启动构建良好权限的用户的名称


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

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

见“


设置ssh代理(在该页中解释)非常重要,因为如果不设置ssh代理,您将被要求输入密码短语,而不是用户名和密码。

如果您想在repo中提交后使BitBucket触发Jenkins作业执行,您有两个选项:

  • 使用柱子挂钩
  • 用詹金斯钩子
两者都使用Jenkins API来触发作业

对于POST钩子,您基本上需要按照以下方式构建url:

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

  • 用户:将触发作业的Jenkins用户
  • APITOKEN:是与该用户关联的令牌,以允许使用API,您可以从Jenkins中的用户配置页面获得它
  • JENKINS\u URL:JENKINS服务器的URL
  • 作业名称:作业的名称
  • 令牌:与作业关联的令牌,必须将其添加到作业配置页面(启用远程触发器)
很酷的一点是,您可以从控制台使用curl检查它是否有效

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

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

这是基于以下文件:

  • (提交作业)
  • (查看评论)
  • (如果你想试试詹金斯钩子,这是非常有用的)
希望能有帮助


Ger

您是否启用了csrf?谢谢。这是唯一正确的答案。请注意,用户至少需要总体:读取和作业:生成和读取权限才能使此调用正常工作。这不适用于多分支管道作业配置,因为远程触发器不适用于这些配置。很遗憾听到这一消息。请记住,这是一个超过6年的答案。当时的情况并不复杂。谢谢你指出。嗨,我们可以使用node js在bitbucket中自动部署吗?