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

问题描述 投票:0回答:4

我正在尝试获取文件夹中的所有作业

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

我应该选择什么才能获得文件夹 X 中的所有作业?

jenkins groovy jenkins-pipeline
4个回答
4
投票

不幸的是,ritusmart 准备的这段代码至少在我们的 Jenkins 版本上不起作用,我们目前使用的是 2.289.2。

并且您可以以更简单的方式从指定文件夹获取作业

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

2
投票

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

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

0
投票

不适合我。 我创建了新的实现

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

0
投票
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()
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.