【问题标题】:Jenkins to List count of build for jenkins job詹金斯列出詹金斯工作的构建计数
【发布时间】:2020-07-04 20:58:01
【问题描述】:

我想创建一个 jenkins 作业,它可以列出我所有的 jenkins 作业,它是它已执行的构建数的计数。 Jenkins API 或 Groovy 可能会工作。下面的 API 为我提供了特定作业的所有构建 ID 的列表,但我正在寻找为该作业执行的构建的计数。 http://[jenkins_server]/job/[jobname]/api/xml?tree=builds[id]

我也指的是这个:https://stackoverflow.com/a/28039134/12897205

如果我可以使用任何插件,请告诉我

【问题讨论】:

    标签: jenkins jenkins-plugins jenkins-api


    【解决方案1】:

    你可以试试 Jenkins 提供的 global-build-stats 插件。它为每个管道中执行的构建总数提供了图形表示,并提供了更多详细信息,例如执行时间、状态、执行程序等。您还可以通过添加开始和结束日期进行过滤。

    https://plugins.jenkins.io/global-build-stats/

    【讨论】:

      【解决方案2】:

      在管道中使用构建步骤。

      为了简单起见,我只需在 sh 步骤中放置一个简单的 bash 并获取每个作业的构建数。另请注意,这仅在您未设置自定义内部版本号时才有效。 :)

      要获取作业列表,

      curl -s -g http://<jenkins-url>/api/json\?tree\=jobs\[name\] | jq -r '.jobs[].name' | awk -v ORS=, '{print $1}' | sed 's/,$/\n/'
      

      要获取所有相关构建的列表,请将上面命令中的值传递给下面的 for 循环的作业名参数。

      for i in {jobname1,jobname2}; do count=$(curl -s http://<jenkins-url>/job/$i/api/json\?tree\=nextBuildNumber | jq .nextBuildNumber-1) && echo "\nJobName: $i \nNumber of builds:$count"; done;
      

      EDIT-1 复制以下脚本并在您的 Jenkinsfile 中调用它。您可以将要保留的作业数量作为参数传递。在作业中根据需要更改构建/作业 url,或者也将其作为参数传递。

      #!/bin/bash
      
      jobstokeep=$1
      
      listofbuilds=$(curl -sg http://jenkins-url/job/jobName/api/json?tree=builds[number] | jq .[] | grep 'number' | sed 's/[^0-9]//g' | awk -v var=$jobstokeep 'NR>var' | awk -v RS='' -v OFS=',' '$1=$1')
      
      echo $listofbuilds
      
      for i in ${listofbuilds//,/ }; do curl -s $user:$pass -X POST http://jenkins-url/job/jobName/$i/doDelete && echo "Build $i is deleted"; done;
      

      上面的脚本将首先打印要删除的作业数作为逗号分隔值,然后循环遍历每个作业并使用 curl 命令(Jenkins Rest API)删除它们。

      【讨论】:

      • 感谢 vijay,可以从中获取最新和最旧的内部版本号吗?实际上,我想创建一个作业,该作业应保留最新的 10 或 20 个最新版本,并通过手动访问每个作业来删除其余的其他旧版本。
      • 如果你不介意我问,你为什么要创建一个新工作来删除旧版本。 Jenkins 有一个构建丢弃器插件,可以让您只保留特定天数或仅保留特定数量的构建。像最近的 20 个构建,5 个构建左右。如果那是您要查找的内容,请检查文档。 Discard Old Build.
      • 是的,但之前没有到位。现在我必须清理旧版本
      • 我会在某个时候发布对现有答案的编辑。你可以检查一下。顺便说一句,我不确定是否有可用的 groovy 脚本来执行此操作。但它可以用它的实用程序在 bash 中完成。
      • 感谢 Vijay 赞赏..!!您的帮助很大!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 2014-07-18
      • 2012-10-13
      相关资源
      最近更新 更多