使用基于URL的调用来检索Jenkins上的构建状态 - 计算构建中剩余百分比的最简洁,最简单的方法是什么?
我已经查看了使用estimatedDuration
从返回的JSON中使用timestamp
,然后根据服务器的当前时间戳计算它,但我遇到了问题,因为我的调用服务器时间戳是关闭的来自jenkins服务器timestamp
的内容(更不用说TZ差异,服务器托管不同的提供商/我无法直接解决时间戳问题)..除此之外,依赖于两个似乎有点宽松如果可以避免的话,不同的服务器时间戳计算任何东西..
其他信息:
我使用的Jenkins JSON网址采用以下格式:http://{jenkins_serverurl}/job/{jenkins_job_name}/{jenkins_job_number}/api/json
它包含上面提到的estimatedDuration
和(作业开始)timestamp
。我试图用它来实时显示詹金斯建造时估计的剩余百分比。
答案 0 :(得分:1)
我认为跟踪构建的一种简单方法是从jenkins public(在我的配置上)ajax调用查看构建队列的HTML版本和执行程序。它是进度条的实际HTML。百分比被发现为内联CSS属性。具体来说,您要查看的是在此端点上找到的执行程序:
POST /ajaxExecutors HTTP/1.1
Host: [JENKINS URL]
Content-Length: 0
Pragma: no-cache
Cache-Control: no-cache
Origin: [JENKINS URL]
User-Agent: Mozilla/5.0 (X11; Linux x86_64)
Content-type: application/x-www-form-urlencoded; charset=UTF-8
Accept: text/javascript, text/html, application/xml, text/xml, */*
X-Prototype-Version: 1.7
X-Requested-With: XMLHttpRequest
Referer: [JENKINS URL]
Accept-Language: en-US,en;q=0.8
Cookie: [COOKIE INFO IF YOU NEED IT]
您将获得进度条的HTML表示。您想要寻找的关键部分是:
...
<td class="pane">
<div style="white-space: normal">
<a href="/job/jenkins_cron/">jenkins<wbr>_cron</a>
<table class="progress-bar" style="cursor:pointer">
<tbody>
<tr>
<td class="progress-bar-done" style=
"width:17%;"></td>
<td class="progress-bar-left" style=
"width:83%"></td>
</tr>
</tbody>
</table>
</div>
</td>
...
我要做的是在&#34;进度条完成&#34;下取出与style
相关联的td
。类。你可以使用类似的东西:
h=[ajaxExecutors RESPONSE BODY]
from bs4 import BeautifulSoup
import re
soup = BeautifulSoup(h)
found = soup.find("td", { "class" : "progress-bar-done" })
# -> <td class="progress-bar-done" style="width:17%;"></td>
percent_progress = re.findall( 'width:([0-9]+)%', str(found))[0]
# -> 17
注意:在运行多个构建时,您必须解析tr表。此外,没有错误检查,因此如果构建没有运行,您将需要单独处理该案例。