我使用groovy脚本来获取超过30天的所有Hudson作业。使用下面的脚本。 我还想禁用所有旧作业作为此脚本的一部分,有人可以建议如何执行此操作。
下面是hudson的脚本。
// Set how old the jobs to list should be (in days)
def numDaysBack = 30
def cutOfDate = System.currentTimeMillis() - 1000L * 60 * 60 * 24 * numDaysBack
//Initiallize it to zero
def oldJobsNumber = 0
def size = hudson.model.Hudson.instance.getItems().size()
println "Total Number of Jobs on hudson :" + size
for (i=0;i<size;i++){
def allJob= hudson.model.Hudson.getInstance().getItems().get(i).getAllJobs()
def job =new ArrayList(allJob).get(0)
if (job != null && job .getLastBuild() != null && job.getLastBuild().getTimeInMillis() < cutOfDate) {
println job.getFullName()
oldJobsNumber++
}
}
println oldJobsNumber
答案 0 :(得分:1)
import com.cloudbees.hudson.plugins.folder.Folder
def allJob= hudson.model.Hudson.getInstance().getItems()
for(int i=0; i<allJob.size(); i++){
def job = allJob[i]
if(job instanceof hudson.model.Project && job .getLastBuild() != null ){
processJob(job)
}else if(job instanceof Folder){
processFolder(job)
}
}
void processFolder(Item folder){
println "Processing Folder -"+folder.getFullName()
folder.getItems().each{
if(it instanceof com.cloudbees.hudson.plugins.folder.AbstractFolder){
processFolder(it)
}else{
processJob(it)
}
}
}
void processJob(Item job){
if(job instanceof hudson.model.Project && job .getLastBuild() != null ){
println job.getFullName() +" -- "+job.getLastBuild().getTimeInMillis()
// Now you can chek time here And if the condition is met then
// job.disable()
}
}
我在这里编写完整代码的原因是因为它长期存在于我的待定列表中。如果你在这方面投入了更多的时间,我相信你可以想出来。