我想把所有的工作都放到一个文件夹里
Jobs = input( id: 'userInput', message: 'Select the job', parameters: [ [$class: 'ChoiceParameterDefinition', choices: "????", description: 'Properties', name: 'jobs'] ])
我应该在选择中放置什么以获取文件夹X中的所有作业?
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) }
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() }
5us2dqdw3#
对我不起作用。我创建了新的实现
def folderName = "folder_name_full_path" def jobsList = [] Jenkins.instance.getAllItems(Job.class).each{ if(it.fullName.contains(folderName)) { jobsList << it.fullName } }
3条答案
按热度按时间gtlvzcf81#
不幸的是,这段由ritusmart编写的代码至少在我们的Jenkins版本上不起作用,我们目前使用的是2.289.2。
您可以从指定的文件夹中以更简单的方式获取作业
dzhpxtsq2#
这是一种方法,使用脚本控制台:
5us2dqdw3#
对我不起作用。我创建了新的实现