我想使用jenkins API获取有关当前作业的信息。我可以找到关于最后一次构建的信息(.../job/MyJob/lastBuild/api/xml
),但我没有看到允许我创建进度条的字段。我看到estimatedDuration
字段和building
字段,但没有任何内容告诉我它已经运行了多长时间。
答案 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,其中列出了上一次构建的所有必需参数。