2017-12-20 7 views
0

groovy 스크립트를 사용하여 30 일 이상 된 모든 Hudson 작업을 가져옵니다. 아래의 스크립트를 사용하십시오. 이 스크립트의 일부로 모든 이전 작업을 비활성화하려면 누군가가이 작업을 수행 할 것을 제안 할 수 있습니까?여러 Hudson/Jenkins 작업을 한 번에 비활성화하는 방법

아래는 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
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() 
    } 
} 

내가 여기에 전체 코드를 쓴 이유는. 당신이 이것에 더 많은 시간을 투자했다면 당신이 그것을 알아낼 수 있었을 것이라고 확신합니다.

관련 문제