-
Notifications
You must be signed in to change notification settings - Fork 557
/
discardOldBuilds.groovy
33 lines (30 loc) · 1.4 KB
/
discardOldBuilds.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*** BEGIN META {
"name" : "Discard old builds",
"comment" : "Changes the config of the builds to discard old builds (only if no log rotation is configured).",
"parameters" : [ 'dryRun', 'daysToKeep', 'numToKeep', 'artifactDaysToKeep', 'artifactNumToKeep'],
"core": "2.46.2",
"authors" : [
{ name : "Mestachs" }, { name : "Dominik Bartholdi" }, { name: "Denys Digtiar" }
]
} END META**/
// NOTES:
// dryRun: to only list the jobs which would be changed
// daysToKeep: If not -1, history is only kept up to this days.
// numToKeep: If not -1, only this number of build logs are kept.
// artifactDaysToKeep: If not -1 nor null, artifacts are only kept up to this days.
// artifactNumToKeep: If not -1 nor null, only this number of builds have their artifacts kept.
import jenkins.model.Jenkins
import hudson.model.Job
import jenkins.model.BuildDiscarderProperty
import hudson.tasks.LogRotator
Jenkins.instance.allItems(Job).each { job ->
if (job.isBuildable() && job.supportsLogRotator() && job.getProperty(BuildDiscarderProperty) == null) {
println "Processing \"${job.fullDisplayName}\""
if (!"true".equals(dryRun)) {
// adding a property implicitly saves so no explicit one
job.addProperty(new BuildDiscarderProperty(new LogRotator ( daysToKeep, numToKeep, artifactDaysToKeep, artifactNumToKeep)))
println "${job.displayName} is updated"
}
}
}
return;