<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 403 No valid crumb was included in the request</title>
</head>
<body><h2>HTTP ERROR 403 No valid crumb was included in the request</h2>
<table>
<tr><th>URI:</th><td>/job/api-xxxxxx/job/stg/job/xxxxxxxxxxx/</td></tr>
<tr><th>STATUS:</th><td>403</td></tr>
<tr><th>MESSAGE:</th><td>No valid crumb was included in the request</td></tr>
<tr><th>SERVLET:</th><td>Stapler</td></tr>
</table>
<hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.27.v20200227</a><hr/>
</body>
</html>
我也面临同样的错误。我可以给你建议一个可行的变通方法,但我不能保证它是安全的(使用基于令牌的验证)。
因为403状态码清楚地说明这个URL存在,但你的用户没有被授权访问这个URL。
下面是你如何让它工作。
导航到Jenkins > 管理Jenkins > 配置全局安全 > 在授权下选择基于矩阵的安全,并检查下面的选项。匿名用户:
---------------------------------------------
| User | Overall | Job |
|--------------------------------------------
| Anonymous | Read | Read, Workspace & |
| user | | Build |
--------------------------------------------
并保存更改。
之后在Jenkins中导航到你的工作> 配置> 构建触发器> 并选择 "远程触发构建(例如,从脚本)"
选择后,会出现一个文本框,上面有标签"认证令牌",在这里你可以生成一个令牌。在文本框中输入一些文字来生成令牌。例如,您输入了 誓言牌.
现在导航到Bit Bucket > Repository Settings > Webhook > 编辑并输入如下的URL。
JENKINS_URL/view/JenkinsViewName/job/JenkinsJobName/build?token=OathToken
在上面的URL替换以下。
JENKINS_URL - With you original Jenkins url (http://Domain/)
JenkinsViewName - With the view name in your Jenkins pipeline
JenkinsJobName - With the job name in your Jenkins pipeline
OathToken - With your original Token value
点击现在测试连接,它将返回201状态代码,它会触发构建后,在仓库的新推送。
再次请考虑你的安全偏好。