繁体   English   中英

如何通过 bitbucket-hook 将面包屑信息传递给詹金斯?

[英]How to pass crumb info via bitbucket-hook to jenkins?

curl -X POST http://xxx.yyy.zzz:5555/job/job-name/build --user john-devops-jenkins:11df3ed41129c5c7da1518e9c3149896de -H 'Jenkins-Crumb:31827a74a160347a641c87ddbc8e3b6e'

上面带有 post 请求的 curl 代码在触发 Jenkins 构建时绝对可以正常工作。

试过:

错误: No valid crumb was included in the request

仍然没有运气,如何将 bitbucket 挂钩配置为 crumb 的容器标头信息,或者如何在不依赖第三方插件的情况下通过 url 传递它?

经过一天的努力和关于 curl 请求如何执行的头脑风暴,最终通过配置 bitbucket webhook 解决了这个问题,如下所示:

http://jenkins-username:jenkins-password@jenkins-url:5555/job/job-name/build?crumb=crumb_token。

希望它有所帮助,许多问题都没有得到解答,并且都建议使用第三方或通用网络挂钩等。

CRUMB_TOKEN 只不过是我们通过 Jenkins 配置生成的AUTHENTICATION_TOKEN

请按照以下步骤获取身份验证令牌:

  • 登录詹金斯。
  • 点击你的名字。
  • 单击配置。
  • 单击显示 API 令牌。

不要与此 URL 混淆: JENKINS_URL/job/policy-vault/build?token=TOKEN_NAME ,在触发器构建远程输入选项旁边提到

应配置为远程构建的正确 URL 如下:

http://jenkins-username:jenkins-password@xxx.xxx.xxxx.xxx:5555/job/project-id/build?crumb=AUTHENTICATION_TOKEN

Webhook 也应该从 Bitbucket 配置

Settings -> Repository Settings -> Webhooks

标题: PROJECT-XYZ-HOOK

网址: http://jenkins-username:jenkins-password@xxx.xxx.xxxx.xxx:5555/job/project-id/build?crumb=AUTHENTICATION_TOKEN

我在这里迟到了,但我的第二版答案是针对因 Jenkins 的最新更新而被阻止的人们。

现在,随着最新的 Jenkins 最新更改,Bitbucket webhook url 如下所示:

http://jenkins-username:token-generated-for-loggedin-user@url:port/job/job-name/build?crumb=Jenkins-Crumb:crumb_long_token

可以使用以下命令生成 Crumb 长令牌:

wget -q --auth-no-challenge --user jenkins-username --password jenkins-password --output-document - 'http://jenkins-url:8081/crumbIssuer/api/xml?xpath=concat(/ /crumbRequestField,":",//crumb)'

输出将是: Jenkins-Crumb:6f2dcf2182efd19511b2ebf7b787e%

token-generated-for-loggedin-user

你必须创建它去:

http://jenkins-url:8081/user/jenkins-username/configure

在 API 令牌中,单击生成。 生成令牌后,将其保存在某处。 同样应该传递给我们稍后形成的 URL。

您可以验证返回此 URL:http://jenkins-url:8081/user/jenkins-username/configure,您会注意到该令牌用于正确配置的次数。

除此之外,您还应该进行一些更改。

您必须安装:来自 Manage Jenkins 的 Bitbucket、bitbucket-pipeline、strict crumb issuer 插件

最后,转到:

http://jenkins-url:8081/configureSecurity/

CSRF 保护

Default Crumb Issuer更改为Strict Crumb Issuer

Strict Crumb Issuer是我们上面安装的

调查中的大量努力使这一改变奏效。 希望这会有所帮助并解除封锁。

我正在使用 jenkins 2.350,它对我有用,谢谢 Mithun。 只需要更新以下部分,因为我需要一段时间才能解决。

可以使用以下命令生成 Crumb 长令牌:

在浏览器中打开此链接; JENKINS_URL:PORT/crumbIssuer/api/xml你会得到;

crumb:f5a4de9c398c97d178d2bb4~~~58ee3420a1d5e91ce2a773251a092832ae116c49442007e211bac4d2cd4b07ac968783445cd49411####6cd59d6af3df1d41bf

crumbRequestField: Jenkins-Crumb

因此,您的长面包屑将是:

Jenkins-Crumb: f5a4de9c398c97d178d2bb4~~~58ee3420a1d5e91ce2a773251a092832ae116c49442007e211bac4d2cd4b07ac968783445cd49411####6cd59d6af3df1d41bf

现在在最后的以下 URL 中添加上面的 Crumb。

http://jenkins-username:token-generated-for-loggedin-user@url:port/job/job-name/build?crumb=Jenkins-Crumb:crumb_long_token

休息按照米通说的,谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM