Jenkins to List count of build for jenkins job

l5tcr1uw  于 5个月前  发布在  Jenkins
关注(0)|答案(2)|浏览(60)

我想创建一个jenkins作业,它可以列出我所有的jenkins作业,它是它执行的构建数量的计数。Jenkins API或Groovy可能工作。下面的API为我提供了特定作业的所有构建ID的列表,但我正在寻找为该作业执行的构建数量。http://[jenkins_server]/job/[jobname]/api/xml?tree=builds[id]
我也在写这个:https://stackoverflow.com/a/28039134/12897205
让我知道如果我可以去任何插件

eni9jsuy

eni9jsuy1#

在管道中使用构建步骤。

为了简单起见,我将简单地将一个简单的bash放在sh步骤中,并获得每个作业的构建数量。另外请注意,只有当您不设置自定义构建数量时,这才有效。:)
要获取工作列表,

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

字符串
要获得所有相关构建的列表,请将上面的命令中的值传递到下面的for循环的jobname参数。

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中调用它。您可以将要保留的作业数量作为参数传递。根据作业中的需要更改build/job 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)删除它们。

r1zk6ea1

r1zk6ea12#

您可以尝试Jenkins提供的global-build-stats插件。它提供了每个管道中执行的构建总数的图形表示,以及执行时间,状态,执行者等更多细节。您还可以通过添加开始和结束日期进行过滤。
https://plugins.jenkins.io/global-build-stats/

相关问题