我正在尝试从我公司的机器上触发 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);
}
最佳答案
像这样使用 API 触发构建只会将构建排入队列,等待执行。因此,API 调用会立即返回,而无需等待构建开始或完成(有可能两者都不会发生)。
但是对您的请求的响应将包含一个 Location
HTTP header ,指向新创建的队列项。例如:
HTTP/1.1 201 Created
Location: http://localhost:8080/queue/item/16/
检查此资源的 API URL(即将 api/json
或 api/xml
附加到 URL)将返回有关排队项目的信息。
如果构建仍在队列中,您将看到原因
原因(例如等待可用的代理),但如果构建已开始,您将看到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 URL,您将能够检查其 result
字段以获取构建结果。
关于javascript - 远程触发构建后如何获得 Jenkins 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42285791/