从Jenkins REST API获取所有作业的所有构建的构建详细信息

nbewdwxp  于 2023-10-17  发布在  Jenkins
关注(0)|答案(2)|浏览(270)

我有一个托管的Jenkins服务器,从那里,我试图使用Jenkins REST API获取所有作业的构建细节(如结果,时间戳,持续时间等),然后保存在我的数据库中。
现在,我从Java代码中调用以下API,以获取所有作业(大约200个作业):
https://<JENKINS_HOST>/api/json
然后,我通过使用以下命令获取作业细节和每个作业的所有构建:
https://<JENKINS_HOST>/job/MY_JOB/api/json
最后,对于每个构建(我只需要获取最后50个),我必须调用this来获取构建细节:
https://<JENKINS_HOST>/job/MY_JOB/<BUILD_NUMBER>/api/json
因此,总共大约有50*200 + 201 =超过10000个API调用。
我猜,这么多的API调用会使Jenkins服务器运行缓慢吗?
所以,我的问题是,有没有一个更快/更优化的方法来做到这一点,所以我不必做这么多的API调用?
类似于我可以使用一个URL获取所有构建细节的地方,如下所示:(假设)
https://<JENKINS_HOST>/job/MY_JOB/api/json?fetchAllbuildDetails=True

owfi6suc

owfi6suc1#

如果其他人也遇到了同样的问题,我可以使用树来完成:

https://<JENKINS_HOST>/api/json?tree=jobs[name,url,builds[number,result,duration,url]]

在这里,列名可以被过滤,只提取你需要的数据,因为从这里返回的数据量是巨大的。
你也可以像这样限制要获取的记录数:

https://<JENKINS_HOST>/api/json?tree=jobs[name,url,builds[number,result,duration,url]{0,50}]

这将只获取所有作业的最后50个构建,这正是我所需要的。

rbpvctlc

rbpvctlc2#

获取指定作业的生成信息

https://{JENKINS_SERVER}/job/{JOB_NAME}/api/json?tree=builds[number,result,timestamp]

获取有关指定视图中所有作业的生成信息

https://{JENKINS_SERVER}/view/{VIEW_NAME}/api/json?tree=jobs[name,builds[number,result,timestamp]]

相关问题