【问题标题】:How to pass crumb info via bitbucket-hook to jenkins?如何通过 bitbucket-hook 将面包屑信息传递给詹金斯?
【发布时间】:2019-10-18 09:25:25
【问题描述】:
curl -X POST http://xxx.yyy.zzz:5555/job/job-name/build --user john-devops-jenkins:11df3ed41129c5c7da1518e9c3149896de -H 'Jenkins-Crumb:31827a74a160347a641c87ddbc8e3b6e'

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

试过了:

错误:No valid crumb was included in the request

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

【问题讨论】:

    标签: jenkins bitbucket devops bitbucket-pipelines


    【解决方案1】:

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

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

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

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

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

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

    不要混淆这个 URL:JENKINS_URL/job/policy-vault/build?token=TOKEN_NAME,它在 Trigger builds remotes 输入选项旁边提到

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

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

    还应从 Bitbucket 配置 Webhook

    Settings -> Repository Settings -> Webhooks
    

    标题: PROJECT-XYZ-HOOK

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

    【讨论】:

    • 我不明白这如何解决 bitbucket @Mithun Shrevatsa 的问题。您能否提供一个使用虚拟 url 数据而不是占位符的示例?我有一个类似https:jenkins.myorg.com/bitbucket-hook 的网址如何添加面包屑并将其添加到我的 bitbucket webhook?
    • @Mithun shrevatsa 。以上格式也试过了,还是报错
    • @DavidEssien - 更新
    • @krishna - 更新
    【解决方案2】:

    我来晚了,但我的第二版答案是针对因 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是我们上面安装的

    在调查中付出了很多努力,使这项改变奏效了。希望这会有所帮助并解除阻塞。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 2017-08-28
      • 2018-02-13
      • 1970-01-01
      相关资源
      最近更新 更多