User Tools

Site Tools


notes:groovy-jenkins-credential

JENKINS: Script groovy pour explorer les magazins Credentials

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.

notes/groovy-jenkins-credential.txt · Last modified: 2025/02/19 10:59 by 127.0.0.1