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