我试图从我公司的机器上触发jenkins工作,然后如果成功与否则返回。目前我能够通过我创建的URL(隐藏隐私)来触发作业,所以我觉得URL正确并且参数正确传递,并且它们显示在作业的控制台输出和所有内容中没关系。但是,我想知道构建是否成功。
从大多数例子中我看到jenkins的回复,状态代码表示成功(201)。但是,我的回调函数中从未收到任何内容。有什么想法吗?
function onButtonClick()
{
var JenkinsURL = "http://mycompany:8080/view/project/job/jobname/buildWithParameters?token=TokenHere";
var params = new Object();
params.Data1 = "Data";
params.Data2 = "";
for (var i = 0; i < list.length; i++) {
params.Data2 += list[i];
}
$.ajax(
{
url: JenkinsURL,
method: 'POST',
data: params,
dataType: 'json',
success: RebootCallback,
fail: RebootCallback,
}
);
}
function RebootCallback(result)
{
alert(result);
}
答案 0 :(得分:3)
使用像这样的API触发构建只是将构建排队等待执行。因此,API调用会立即返回,而无需等待构建开始或完成(可能两者都不会发生)。
但是对您的请求的响应将包含一个Location
HTTP标头,指向新创建的队列项。例如:
HTTP/1.1 201 Created
Location: http://localhost:8080/queue/item/16/
检查此资源的API网址(即将api/json
或api/xml
附加到网址)将返回有关排队项目的信息。
如果构建仍在队列中,您将看到why
原因(例如,等待可用代理),但如果构建已经开始,您将看到executable.url
指向构建的字段。例如,已启动的构建的API JSON:
{
…
"url": "queue/item/16/",
"executable": {
"_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun",
"number": 16,
"url": "http://localhost:8080/job/test/4/"
}
…
}
如果您获取该版本#4的API网址,则可以检查其result
字段以获取构建结果。