詹金斯:获取特定日期的构建编号范围

Nic*_*ick 3 scripting automation build jenkins

出于数据挖掘的原因,我想获取在特定日期构建的 jenkins 作业的构建编号范围。有没有插件可以完成这个或任何其他可能的方式?

谢谢,尼克

Dav*_*her 7

内置的 REST JSON API 将为您提供特定作业的构建列表: http://jenkins:8080/job/JOB_NAME/api/json?tree=builds[fullDisplayName,id,number,timestamp]&pretty=true

产生类似的东西:

{
  "builds" : [
    {
      "fullDisplayName" : "JOB_NAME #113",
      "id" : "2014-10-31_23-05-20",
      "number" : 113,
      "timestamp" : 1414821920808
    },
    {
      "fullDisplayName" : "JOB_NAME #112",
      "id" : "2014-10-31_17-26-39",
      "number" : 112,
      "timestamp" : 1414801599000
    },
    ....
Run Code Online (Sandbox Code Playgroud)

如果您的构建 ID 是基本日期戳(如上),您可以进行一些字符串处理来过滤结果。否则,您可以将时间戳转换为适当的日期并对其进行过滤。

大多数 Jenkins 页面底部都有一个 REST API 链接,可提供更多文档,但您经常需要试验该 API 以确定它可以提供哪些详细信息。


更新:正如@Nick 发现的那样,builds默认情况下结果仅限于最新的 100 个元素。根据this Jenkins issue,您可以使用隐藏allBuilds元素来检索“所有构建”。因此,如果您需要所有构建,请使用:http://jenkins:8080/job/JOB_NAME/api/json?tree=allBuilds[fullDisplayName,id,number,timestamp]&pretty=true

Jenkins 1.568 还在 API 结果中引入了分页,因此可以按范围检索结果。如果您的 Jenkins 版本支持,Jenkins REST API 链接描述了语法。