10

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

4

4 回答 4

7

这是为我提供所需信息的 URL:

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

这会产生类似的东西:

<freeStyleBuild>
  <estimatedDuration>86126</estimatedDuration>
  <timestamp>1350615637401</timestamp>
</freeStyleBuild>
于 2012-10-19T20:24:18.203 回答
6

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

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

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

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

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

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

我在 node.js 中使用以下库: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);
});
于 2014-08-21T22:51:18.613 回答
6

对我来说,也可以通过获取 json 来工作:

http://<host>/job/<jobname>/lastBuild/api/json?tree=executor[progress]
于 2016-06-10T07:50:45.703 回答
2

使用以下:

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

这将以百分比的形式返回您的进度

例如:27

同样,您可以获取其他参数,例如用户、ID(内部版本号)、时间戳等。

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

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

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

于 2013-11-11T18:23:38.680 回答