Bitbucket webhook运行jenkins工作

时间:2017-12-09 13:25:32

标签: git jenkins bitbucket webhooks

更新

我成功地发送了curl的帖子请求以触发jenkins工作:

curl -I -X POST http://jenkinsAccountUserName:jenkinsAccountPassword@JenkinsIp:8080/job/projecty_ci/build -H "Jenkins-Crumb:a4fb99fbdb252fda3cc69ee575bedabc"

我不明白如何将其转换为网址:Problem accessing /job/projecty_ci/build. Reason: No valid crumb was included in the request

http://jenkinsAccountUserName:jenkinsAccountPassword@JenkinsIp:8080/job/projecty_ci/build?Jenkins-Crumb:a4fb99fbdb252fda3cc69ee575bedabc

这可以从Chrome中运行得很好,但不是来自bitbucket webhooks。

有什么问题?

我在詹金斯创建了一份工作,我可以通过网址成功触发。

当我从bitbucket的webhook中触发相同的工作时,我收到错误:Problem accessing /job/projecty_ci/build. Reason: No valid crumb was included in the request

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:2)

尝试生成一个CSRF令牌,以便在您的API请求中使用。

  • GOTO:Jenkins>管理Jenkins>配置全局安全性并启用 防止跨站点请求伪造攻击。
  • 从Crumb算法中选择Default Crumb Issuer并保存以应用 更改并启用。

Remote access API

你可以通过调用jenkins api并在你的URL中使用它来获取碎屑。

对于curl / wget,您可以从URL JENKINS_URL / crumbIssuer / api / xml(或... / api / json)获取请求中所需的标头。这样的事情:

wget -q --auth-no-challenge --user USERNAME --password PASSWORD --output-document - \
'JENKINS_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'

这将打印类似“.crumb:1234abcd”的内容,您应将其添加到后续请求中。

管理构建

注意:为了防止CSRF,Jenkins要求POST请求包含一个特定于每个用户的crumb。获得面包屑的命令是:

SERVER=http://localhost:8080
    CRUMB=$(curl --user $USER:$APITOKEN \
        $SERVER/crumbIssuer/api/xml?xpath=concat\(//crumbRequestField,%22:%22,//crumb\)) 

开始构建

$ curl -H ".crumb:<crumb_string>" -X POST http://<jenkins_url>/job/<job_name>/build --user <user_name>:<api_token>

答案 1 :(得分:0)

我可能不是直接在这里解决您的问题,但想分享我们已成功按照https://support.cloudbees.com/hc/en-us/articles/226568007-How-to-Trigger-Non-Multibranch-Jobs-from-BitBucket-Server-

上的说明成功触发了Jenkins工作

我们在BitBucket服务器上使用的插件是https://marketplace.atlassian.com/plugins/com.nerdwin15.stash-stash-webhook-jenkins/server/overview

答案 2 :(得分:0)

我在这里迟到了,我遇到了同样的问题,我将如下所示的webhook URL配置为对我有用:

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

引用问题: How to pass crumb info via bitbucket-hook to jenkins?

希望有帮助!