如何通过API获取正在运行的jenkins作业的进度条数据

时间:2012-10-17 22:30:33

标签: api jenkins

我想使用jenkins API获取有关当前作业的信息。我可以找到关于最后一次构建的信息(.../job/MyJob/lastBuild/api/xml),但我没有看到允许我创建进度条的字段。我看到estimatedDuration字段和building字段,但没有任何内容告诉我它已经运行了多长时间。

4 个答案:

答案 0 :(得分:6)

这是给我提供所需信息的网址:

http://<host>/job/<jobname>/lastBuild/api/xml?tree=timestamp,estimatedDuration

产生的结果如下:

<freeStyleBuild>
  <estimatedDuration>86126</estimatedDuration>
  <timestamp>1350615637401</timestamp>
</freeStyleBuild>

答案 1 :(得分:6)

对我来说,也是通过获得一个json:

http://<host>/job/<jobname>/lastBuild/api/json?tree=executor[progress]

答案 2 :(得分:5)

我在尝试检索百分比时遇到了这个问题。当我想出一个解决方案时,我想我会把它发布在这里。

响应包括两个字段timestamp(作业开始的时间)和estimatedDuration(毫秒)。

如果您使用当前时间,则可以从当前时间减去timestamp。这将为您提供自作业开始以来的毫秒数。使用此计算值,您可以将其与estimatedDuration字段进行比较,从而确定完成百分比。

所以公式是(其中data是返回数据的JSON对象):

Console.log(" complete: " + Math.round((new Date().getTime() - data.timestamp) / data.estimatedDuration * 100) + "%");

您使用的是XML而不是JSON,但我确信它的结构类似。

我在node.js中使用以下lib:https://github.com/jansepar/node-jenkins-api

我的逻辑是:

var jenkinsapi = require('./lib/jenkins');

var jenkins = jenkinsapi.init("http://jenkins.myServer.com:8080");

jenkins.last_result('/myProj', function(err, data) {

  if(err) {
    console.log("last result kitchen_ellipse: ERROR (last result): " + data.statusCode);
    return;
  }

  console.log("progress " + data.fullDisplayName + " number: #" + data.number + 
          + " complete: " + 
            Math.round((new Date().getTime() - data.timestamp) / 
                       data.estimatedDuration * 100) + "%"
          + " result: " + data.result);
});

答案 3 :(得分:2)

使用以下内容:

 http://<host>/job/<jobname>/lastBuild/api/xml?depth=1&xpath=*/executor/progress/text()

这将返回百分比进度

ex:27

类似地,你可以获得其他参数,如用户,id(内部版本号),时间戳等。

您可以使用以下网址找到它们:

http://<host>/job/<jobname>/lastBuild/api/xml?depth=1

上面的url返回一个xml,其中列出了上一次构建的所有必需参数。