当前位置: 首页 > 面试题库 >

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

夔宏深
2023-03-14
问题内容

我有一台托管的Jenkins服务器,并试图从那里获取所有使用Jenkins REST
API的作业的构建详细信息(如结果,时间戳,持续时间等),然后将其保存在我的数据库中。

现在,我正在从Java代码中调用以下API,以获取所有作业(约200个作业):

https://<JENKINS_HOST>/api/json

然后,我使用以下命令获取作业详细信息和每个作业的所有构建:

https://<JENKINS_HOST>/job/MY_JOB/api/json

最后,对于每个构建(我必须仅获取最近的50个),我必须调用它来获取构建详细信息:

https://<JENKINS_HOST>/job/MY_JOB/<BUILD_NUMBER>/api/json

因此,总共约有50 * 200 + 201 =超过10000个API调用。

我猜,这许多API调用会使Jenkins服务器执行缓慢吗?

因此,我的问题是,有没有更快/更好的方法来执行此操作,因此我不必进行那么多的API调用?

像这样的地方,我可以使用一个网址获取所有构建细节,如下所示:(假设)

https://<JENKINS_HOST>/job/MY_JOB/api/json?fetchAllbuildDetails=True


问题答案:

以防万一,其他任何人都陷入困境,我可以使用树来完成此任务:

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个版本,这正是我所需要的。



 类似资料:
  • 问题内容: 关于这个问题,有没有办法在使用多分支管道时从中获取等效信息?具体来说-自上次成功构建以来的提交列表。 目前,我们使用以下 但这仅在推送了多个提交时才返回触发构建的最后一个提交。我接受一个新分支的第一个构建可能是ambiguious但得到触发构建提交列表 时可能 会非常有用。 问题答案: 我找到了一种似乎对我们有用的解决方案。它围绕着获取提交哈希值,然后是提交哈希值。首先,我们编写了一个

  • —profile 参数可以收集一些构建期间的信息并保存到 build/reports/profile 目录下. 并且会以构建时间命名这些文件. 下面是一份日志. 这份日志记录了总体花费时间以及各过程花费的时间. 并以时间大小倒序排列. 并且记录了任务的执行情况. 如果采用了 buildSrc, 那么在 buildSrc/build 下同时也会生成一份日志记录记录.

  • 我有一个jenkins作业,它在工作区中生成属性文件。我想知道是否可以从工作区读取属性文件,然后在同一作业的下一个构建步骤中将其作为程序的参数传递?? 我尝试通过groovy脚本echo env读取该文件。WORKSPACE 64 String fileContents=新文件(${env.WORKSPACE})/key\u generate.properties”).getText('UTF-8

  • 我尝试为Android (*)构建静态库。a)。我的个人档案: 文件无题3.cpp和无题3.h非常简单。当我构建项目时,我得到了唯一的一个库 *.a,但预计所有架构都有四个库:armeabi-v7a arm64-v8a x86 x86_64 当我第一次构建时,编译完成时出错: 在文件夹armeabi-v7a arm64-v8a x86中x86_64只存在*. obj-文件,但不存在. a-文件。我

  • null 我的build_ffmpeg.sh是 #!/bin/bash ndk=/cygdrive/e/android/sdk/ndk-bundle platform=$ndk/platform/android-24/arch-arm toolchain=$ndk/toolchains/arm-linux-androideabi-4.9/prebuild/windows cpu=arm prefi

  • 我如何从"CSV示例"创建一个像"最终结果"这样的数组? 背景 我正在构建一个用于测试的实验室文件系统,我想创建一个看起来有点像真实文件系统的文件夹结构。我有几个包含文件夹信息的CSV文件。 我想采用上面的每个组合,创建一个包含以下所有文件夹的文件系统。 一旦我有了上面所有完整路径的数组,就像做一样简单: 问题 我希望能够为任何CSV文件做到这一点,不管我有多少列,头名称是什么,或者每列有多少值。