How to get the XML definition for a view that is inside a folder?

Article ID:235534607
1 minute readKnowledge base

Issue

  • Is it possible to dump the view definition XML to stdout ? (The view is in the folder).

Environment

  • Jenkins

  • Jenkins LTS

  • CloudBees Jenkins Enterprise (CJE)

  • CloudBees Jenkins Operation Center (CJOC)

  • CloudBees Folders Plugin

Resolution

In order to get the information of one or more views inside a folder you should use the Jenkins Script Console. For that you should navigate to Manage Jenkins -→ Script Console, and run the following script.

import com.cloudbees.hudson.plugins.folder.* jen = Jenkins.instance jen.getItems().each{ if(it instanceof Folder){ println "Folder found" processFolder(it) } if(it instanceof View){ println "View found"+ it.name } } return void processFolder(Item folder){ def buf = new ByteArrayOutputStream() def newOut = new PrintStream(buf) def saveOut = System.out def viewNameList = [] folder.getItems().each{ println "processing..." + folder.name folder.getViews().each(){ if(it instanceof View && it.name != "All") { if(!(it.name in viewNameList)){ viewNameList << it.name println "View " + it.name it.writeXml(buf) } } } println buf.toString() println " " } }

This script uses a very simple approach, and gets all the elements existing at root level for your instance, and if the element is a folder, it processes all the views included in it (except for the All view). It is quite straightforward to extend the script in a way that you can process recursively all the elements, or to get the information only for views matching a given pattern or inside a given folder.

See also:

This article is part of our Knowledge Base and is provided for guidance-based purposes only. The solutions or workarounds described here are not officially supported by CloudBees and may not be applicable in all environments. Use at your own discretion, and test changes in a safe environment before applying them to production systems.