我正在尝试获取文件夹中的所有作业
Jobs = input( id: 'userInput', message: 'Select the job', parameters: [ [$class: 'ChoiceParameterDefinition', choices: "????", description: 'Properties', name: 'jobs'] ])
我应该选择什么才能获得文件夹 X 中的所有作业?
不幸的是,ritusmart 准备的这段代码至少在我们的 Jenkins 版本上不起作用,我们目前使用的是 2.289.2。
并且您可以以更简单的方式从指定文件夹获取作业
def folderName = "YOUR/FOLDER/NAME/"
def allJobs = hudson.model.Hudson.getInstance().getAllItems(Job.class).findAll { it.getFullName().contains(folderName) }
这是一种方法,使用脚本控制台:
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()
}
不适合我。 我创建了新的实现
def folderName = "folder_name_full_path"
def jobsList = []
Jenkins.instance.getAllItems(Job.class).each{
if(it.fullName.contains(folderName)) {
jobsList << it.fullName
}
}
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()
}