我成功地发送了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
。
答案 0 :(得分:2)
你可以通过调用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?
希望有帮助!