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
(ミリ秒)の2 つのフィールドが含まれます。
現在の時刻を取得する場合は、現在の時刻timestamp
から を差し引くことができます。これにより、ジョブが開始されてからのミリ秒数が得られます。この計算値を使用してestimatedDuration
フィールドと比較し、完了率を決定できます。
したがって、式は次のようになります (ここで、data は返されたデータの JSON オブジェクトです)。
Console.log(" complete: " + Math.round((new Date().getTime() - data.timestamp) / data.estimatedDuration * 100) + "%");
JSONではなくXMLを使用していますが、同様の構造であると確信しています。
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);
});
于 2014-08-21T22:51:18.613 に答える