簡體   English   中英

如何通過API獲取正在運行的jenkins作業的進度條數據

[英]how to get progress bar data for a running jenkins job through the API

我想使用jenkins API來獲取有關我當前工作的信息。 我可以找到有關上一次構建的信息( .../job/MyJob/lastBuild/api/xml ),但我沒有看到可以讓我創建進度條的字段。 我看到了一個estimatedDuration字段和一個building字段,但沒有任何東西可以告訴我它已經運行了多長時間。

這是給我提供所需信息的URL:

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

產生的結果如下:

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

我在嘗試檢索百分比時遇到了這個問題。 當我找到解決方案時,我想我會在這里發布。

響應包括兩個字段, 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);
});

對我來說,也是通過獲得一個json工作:

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

使用以下:

 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,其中列出了上一次構建的所有必需參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM