我正在尝试从C#应用程序启动Jenkins硒脚本,并且在身份验证方面遇到麻烦。我一直收到禁止的回应:
No valid crumb was included in the request
我正在这样使用RestSharp插件:
var client = new RestClient(url);
var restRq = new RestRequest(Method.POST);
var response = client.Execute(restRq);
URL为:
http://myjenkinsserver:8080/view/CJX/job/BUILDTORUN/buildWithParameters?token=THISISTHETOKEN&ENVIRONMENT=QA
我不确定是否需要包括身份验证标头? 我还安装了构建授权令牌根插件和构建令牌触发器插件(了解其他地方的信息)。
更新
我在其他地方读过如何从詹金斯那里得到面包屑,所以我添加了一个GET来获取它,代码现在看起来像这样:
var crumbClient = new RestClient("http://MYJENKINSSERVER:8080/crumbIssuer/api/json");
crumbClient.Authenticator = new HttpBasicAuthenticator("USERNAME", "PASSWORD");
var crumbRequest = new RestRequest(Method.GET);
var crumbResponse = crumbClient.Execute(crumbRequest);
var jenkinsCrumb = JsonConvert.DeserializeObject<JenkinsCrumbResponse>(crumbResponse.Content);
var client = new RestClient(url);
var restRq = new RestRequest(Method.POST);
restRq.AddHeader("Jenkins-Crumb", jenkinsCrumb.crumb);
var response = client.Execute(restRq);
它仍然在响应中返回“请求中未包含有效面包屑”。 所以也许我没有在请求中正确设置面包屑?
更新 我还试图在Postman中启动它,只是看它是否不起作用。我得到了:
<h2>HTTP ERROR 403</h2>
<p>Problem accessing /job/__SlackTestRun/buildWithParameters. Reason:
<pre> No valid crumb was included in the request</pre>
</p>
在邮递员中,我将请求发送到上述相同的URL,并使用“ Jenkins-Crumb”参数和application / xml的内容类型设置标题。
没有运气!