Jenkins --- 使用脚本配置【丢弃旧的构建】

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import jenkins.model.Jenkins
import hudson.model.Job
import hudson.tasks.LogRotator

def count = 0
Jenkins.instance.allItems(Job).each { job ->
if ( job.isBuildable() && job.supportsLogRotator()) {
// 注释if所有任务统一设置策略,去掉注释后只更改没有配置策略的任务
//if ( job.getLogRotator() == null) {
job.setLogRotator(new LogRotator (-1, 3))
//}
//立马执行Rotate策略
job.logRotate()
count++
println "$job.name: 磁盘回收已处理"
} else {
println "$job.name: 未修改,已跳过"
}
}
println "总共处理了 $count 个作业"

LogRotator 有 2 个构造方法, 一个是 2 个参数的, 一个是 4 个参数的,构造参数分别为:

  • daysToKeep: 保持构建的天数, 如果非空,构建记录将保存此天数
  • numToKeep: 保持构建的最大个数, 如果非空,最多此数目的构建记录将被保存
  • artifactDaysToKeep: 发布包保留天数,如果非空,比此早的发布包将被删除,但构建的日志、操作历史、报告等将被保留
  • artifactNumToKeep: 发布包最大保留#个构建, 如果非空,最多此数目大构建将保留他们的发布包

定时自动执行

可以搭配 jenkins-cli.jar 执行本地脚本和定时任务配置来定时执行
我的配置如下

1
2
# 每周四4:20执行
20 4 * * 0 java -jar /data/jenkins/jenkins-cli.jar -auth admin:<Token> -s http://192.168.1.31:6108/ groovy = < /data/jenkins/clean-job.groovy

clean-job.groovy 即为上面的脚本