2017-12-15 4 views
0

Ich habe eine Hudson-Instanz ausgeführt, wo ich Hunderte von Jobs jeden Tag ausgeführt habe.Hudson/jenkins: Liste der Jobs, die Build ist älter als ein Monat ist

Ich möchte eine Liste von Jobs erhalten, die letzten erfolgreichen Job x Tage alt war, so dass ich solche unerwünschten Jobs deaktivieren kann.

Beispiel: Einige Jobs gibt es auf Hudson, die zuletzt ein Jahr später erfolgreich aufgebaut wurde, die nicht mehr benötigt wird. Ich möchte einen Weg, um eine Liste von alten Jobs abzufragen und zu erhalten.

Antwort

3

Das folgende Skript wird alle Aufträge auflisten, die älter als 30 Tage (die erste Variable ändern für unterschiedliche Anzahl der Tage):

// Set how old the jobs to list should be (in days) 
def numDaysBack = 30 


def cutOfDate = System.currentTimeMillis() - 1000L * 60 * 60 * 24 * numDaysBack 

for (job in Jenkins.instance.getAllItems(Job.class)) { 
    build = job.getLastSuccessfulBuild() 
    if (build != null && build.getTimeInMillis() < cutOfDate) { 
    println job.getFullName() 
    } 
} 

Sie es ausführen, indem Jenkins gehen zu verwalten -> Script-Konsole. Dies ist für Jenkins, Sie müssen es vielleicht etwas für Hudson anpassen.

0

Ich habe den Beitrag von @Jon geändert, um zu Hudson zu passen danke @jon.

unten ist das Skript für 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 
Verwandte Themen