詹金斯列出了詹金斯工作的建造数量

时间:2020-03-24 11:05:54

标签: jenkins jenkins-plugins jenkins-api

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

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

让我知道我是否可以购买任何插件

1 个答案:

答案 0 :(得分:0)

在管道中使用构建步骤。

为简单起见,我将简单地放一个简单的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 loop的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中调用它。您可以传递要保留的作业数量作为参数。在作业中根据需要更改构建/作业网址,或者也可以将其作为参数传递。

#!/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)将其删除。