gpt4 book ai didi

javascript - 远程触发构建后如何获得 Jenkins 的响应

转载 作者:行者123 更新时间:2023-11-28 14:57:31 25 4
gpt4 key购买 nike

我正在尝试从我公司的机器上触发 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/jsonapi/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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com