Le script suivant permet de produire une liste de paramètres composée des id|username|passd enregistrés dans Credantials
import jenkins.* import jenkins.model.* import hudson.* import hudson.model.* import com.cloudbees.plugins.credentials.Credentials import com.cloudbees.plugins.credentials.CredentialsProvider; import com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials; def getPassword = { userid -> def password = "" def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials( com.cloudbees.plugins.credentials.Credentials.class ) Jenkins.instance.getAllItems(com.cloudbees.hudson.plugins.folder.Folder.class).each{ f -> creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials( com.cloudbees.plugins.credentials.Credentials.class, f) def c = creds.findResult { it.id == userid ? it : null } if ( c ) { password = c.password } else { password = "n-a" } } return password } Set<Credentials> allCredentials = new HashSet<Credentials>(); def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials( com.cloudbees.plugins.credentials.Credentials.class ); allCredentials.addAll(creds) Jenkins.instance.getAllItems(com.cloudbees.hudson.plugins.folder.Folder.class).each{ f -> creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials( com.cloudbees.plugins.credentials.Credentials.class, f) allCredentials.addAll(creds) } def choices=[] for (c in allCredentials) { def passwd = getPassword(c.id) choices.add(c.id + "|" + c.username + "|" + passwd) } return choices
Il retourne l'ensemble des couples username/password de la config active, pour ne retourner que les credentials attachés à un dossier il faut réduire la portée de la déclaration dans la classe Folder
Jenkins.instance.getAllItems(com.cloudbees.hudson.plugins.folder.Folder.class).each{ f -> creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials( com.cloudbees.plugins.credentials.Credentials.class, f) allCredentials.addAll(creds) }
de cette manière
jenkins.instance.getAllItems(com.cloudbees.hudson.plugins.folder.Folder.class).findAll{it.name.equals('reseau')}.each{ f -> creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials( com.cloudbees.plugins.credentials.Credentials.class, f) allCredentials.addAll(creds) }
où 'reseau' est le nom du dossier dnas lequel la recherche doit être limitée.