Reputation: 589
I'm trying to get all the jobs in a folder
Jobs = input( id: 'userInput', message: 'Select the job', parameters: [ [$class: 'ChoiceParameterDefinition', choices: "????", description: 'Properties', name: 'jobs'] ])
what should i put on choices to get all the jobs in folder X ?
Upvotes: 3
Views: 15752
Reputation: 1
def folderName = "Folder Name"
def allItems = hudson.model.Hudson.getInstance().getItems()
for(int i=0; i<allItems.size(); i++){
def item = allItems[i]
if (item instanceof com.cloudbees.hudson.plugins.folder.Folder) {
processFolder(item, folderName)
} else if (item.getFullName().contains(folderName)) {
processJob(item)
}
}
void processFolder(com.cloudbees.hudson.plugins.folder.Folder folder, String folderName) {
if (folder.getFullName().contains(folderName)) {
folder.getItems().each {
if (it instanceof com.cloudbees.hudson.plugins.folder.Folder) {
processFolder(it, folderName)
} else {
processJob(it)
}
}
}
}
void processJob(Item job) {
println job.getFullName()
// you can do operations like enable or disable
// job.disable()
}
Upvotes: 0
Reputation: 944
Not work for me. I created new implementation
def folderName = "folder_name_full_path"
def jobsList = []
Jenkins.instance.getAllItems(Job.class).each{
if(it.fullName.contains(folderName)) {
jobsList << it.fullName
}
}
Upvotes: 0
Reputation: 41
Unfortunately this code prepared by ritusmart at least on our version of Jenkins doesn't work, we are currently using 2.289.2.
And you can get jobs from specified folder in a simpler way
def folderName = "YOUR/FOLDER/NAME/"
def allJobs = hudson.model.Hudson.getInstance().getAllItems(Job.class).findAll { it.getFullName().contains(folderName) }
Upvotes: 4
Reputation: 325
This is one way to do it, using script console:
import com.cloudbees.hudson.plugins.folder.Folder
def folderName = "test"
def allJobs= hudson.model.Hudson.getInstance().getItems()
for(int i=0; i<allJobs.size(); i++){
def job = allJobs[i]
if(job instanceof hudson.model.Project && job .getLastBuild() != null ){
processJob(job)
}else if(job instanceof Folder){
processFolderByName(job)
}
}
void processFolderByName(Item folder){
if(folder.getFullName().contains(folderName))
processFolder(folder)
}
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){
println job.getFullName()
// you can do operations like enable to disable
// job.disable()
}
Upvotes: 2