詹金斯:如何找到新创建的项目?

时间:2016-01-14 18:27:16

标签: jenkins

我的经理想要每周制作一个新创建的项目列表。有没有办法实现这个目标?

基于此: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())
    }
  }
}

2 个答案:

答案 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个版本都在上周内执行,则查看最早构建日期的代码会将此作为新作业报告,而不管作业何时实际创建。