我的经理想要每周制作一个新创建的项目列表。有没有办法实现这个目标?
基于此:https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/disableAllJobs.groovy,以及:https://wiki.jenkins-ci.org/display/JENKINS/Display+list+of+projects+that+were+built+more+than+1+day+ago。,我编写了以下脚本,但它给出了java.lang.NullPointerException:在显示后无法在null对象上调用方法getTimestamp()过去7天内新创建的项目。任何人都可以帮我摆脱这个错误吗?
hour=24;
minute=60;
second=60;
oneDayInSecond=hour*minute*second;
sevenDayInSecond=hour*minute*second*7;
now=Calendar.instance;
list=[];
println("${now.time}");
checkNewProjects(Hudson.instance.items)
def checkNewProjects(items) {
for (item in items) {
if (item.class.canonicalName != 'com.cloudbees.hudson.plugins.folder.Folder') {
build_time=item.getFirstBuild().getTimestamp();
if (now.time.time/1000-build_time.time.time/1000<sevenDayInSecond){
item.save()
println(item.name)
println("\t\tFirst build was built in less than 7 days");
println("\t\tFirst built was at ${build_time.time}");
list<< item;
}
} else {
checkNewProjects(((com.cloudbees.hudson.plugins.folder.Folder) item).getItems())
}
}
}
答案 0 :(得分:0)
鉴于您可以访问Jenkins计算机并且您的Jenkins部署在Linux中,您可以:
find /var/lib/jenkins/jobs/ -mtime +7 -type d -maxdepth 1
答案 1 :(得分:0)
要回答新问题:item.getFirstBuild()
正在返回Null。您必须拥有一个没有构建的作业。在检索构建时间戳之前,应检查item.getFirstBuild()
是否为空。
first_build = item.firstBuild // or item.getFirstBuild()
if (first_build) {
build_time = first_build.timestamp
...
} else {
println "${item.name} has no builds"
}
根据您的代码,您已将要求从“检测新创建的作业”更改为“在过去一周内找到具有最早记录版本的作业”。您应该知道,如果您的作业配置中的旧版本到期,如果您有一个经常构建的作业,新代码可能会报告误报。例如,如果您只保留最后10个版本,那么如果这10个版本都在上周内执行,则查看最早构建日期的代码会将此作为新作业报告,而不管作业何时实际创建。