8
votes

Is there an easy way in Jenkins to list all all builds marked as keep-forever? And then, ideally, one click to either unmark the build as keep-forever or to immediately delete it?

In our process, we mark a build as keep-forever if it involves some specific type of failure; that's to keep Jenkins from automatically deleting over time. I need an easy way to get a list of all those keep-forever builds so they don't take up all our disk space over time.

2

2 Answers

12
votes

The following XPath query against Jenkins will list the URLs of all builds marked 'Keep Forever':

http://[jenkins_server]/api/xml?depth=2&xpath=/hudson/job/build[keepLog="true"]/url&wrapper=forever

Enter it in the browser and see what it returns.

Now, you can embed it into XSLT-based HTML to get a list with links to those builds. To delete the build you can provide a button that invokes Jenkins CLI:

java -jar jenkins-cli.jar -s http://[jenkins_server]/ delete-builds [job-name] [build-num]

Unfortunately, I do not know how to disable 'keep build forever' with CLI without deleting it.

7
votes

I was looking for the same thing, and our jenkins is pretty big as well and trying the link:

 http://[jenkins_server]/api/xml?depth=2&xpath=/hudson/job/build[keepLog="true"]/url&wrapper=forever

I ended up crashing it.

But as it turns out I only require the last 'keep forever' build of one job at a time, which seems to work way faster. So I use the following instead:

http://[jenkisn_server]/job/[job_name]/api/xml/?depth=2&xpath=/freeStyleProject/build[keepLog="true"]/number&wrapper=forever

which returns the xml with all the numbers of build that are marked as 'keep forever' You can modify the xpath to fit your needs.