groovy 如何获取Jenkins文件夹中的作业列表?

ccrfmcuu  于 2022-11-01  发布在  Jenkins
关注(0)|答案(3)|浏览(237)

我想把所有的工作都放到一个文件夹里

Jobs = input( id: 'userInput', message: 'Select the job', parameters: [ [$class: 'ChoiceParameterDefinition', choices: "????", description: 'Properties', name: 'jobs'] ])

我应该在选择中放置什么以获取文件夹X中的所有作业?

gtlvzcf8

gtlvzcf81#

不幸的是,这段由ritusmart编写的代码至少在我们的Jenkins版本上不起作用,我们目前使用的是2.289.2。
您可以从指定的文件夹中以更简单的方式获取作业

def folderName = "YOUR/FOLDER/NAME/"
def allJobs = hudson.model.Hudson.getInstance().getAllItems(Job.class).findAll { it.getFullName().contains(folderName) }
dzhpxtsq

dzhpxtsq2#

这是一种方法,使用脚本控制台:

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()
}
5us2dqdw

5us2dqdw3#

对我不起作用。我创建了新的实现

def folderName = "folder_name_full_path"
def jobsList = []
Jenkins.instance.getAllItems(Job.class).each{
  if(it.fullName.contains(folderName)) {
    jobsList << it.fullName
  }
}

相关问题