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

标签 javascript post jenkins

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

相关文章:

javascript - 循环并显示来自 2 个独立数组 Angular 4 的数据

javascript - Bootstrap + 弹出窗口 - skype href 链接不起作用

android - 如何在 POST 请求中将 JSON 作为 BODY 从 Android 应用程序发送到服务器?

jenkins - 不能在 jenkins 中声明构建

unit-testing - 如何根据特定条件触发电子邮件以在 Jenkins 中成功构建

javascript - MVC 和 javascript 新方法;问 : May I have problems in future with this approach?

angular - 无法对 openweathermap.org 执行看似简单的 HTTP POST

wordpress - 如何在 WP 中为自定义帖子类型设置默认分类法(类别)

java - 配置 Jenkins 使用 Chrome - Selenium 3.0.1 Maven TestNG

javascript - 未捕获的 TypeError : json. forEach 不是函数