1

Dans mon processus régulièrement, je reçois un crédit AWS temporaire et dans mon fichier Jenkins, j'ai besoin de mettre à jour un crednetial Jenkins Aws spécifique. Comment puis-je le mettre à jour? La raison pour laquelle j'ai besoin est que la méthode docker Jenkins withRegistry nécessite un identifiant d'identification et je dois mettre à jour ce justificatif chaque fois que je reçois une nouvelle clé AWS pour pouvoir l'utiliser.Mise à jour aws informations d'identification dans le fichier jenkins avec un script groovy

Répondre

1

Après plusieurs essais et erreurs, j'ai trouvé ceci:

import jenkins.model.* 
import com.cloudbees.plugins.credentials.* 
import com.cloudbees.plugins.credentials.impl.* 
import com.cloudbees.plugins.credentials.domains.* 
import com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey 
import com.cloudbees.jenkins.plugins.awscredentials.AWSCredentialsImpl 
import org.jenkinsci.plugins.plaincredentials.StringCredentials 
    def changePassword = { id,accessKey, secKey -> 
def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
    com.cloudbees.jenkins.plugins.awscredentials.AWSCredentialsImpl.class, 
    Jenkins.instance 
) 
def c = creds.findResult { it.id == id ? it : null } 
if (c) { 
    println "found credential ${c.id} for accessKey ${c.accessKey}" 

    def credentials_store = Jenkins.instance.getExtensionList(
     \'com.cloudbees.plugins.credentials.SystemCredentialsProvider\' 
     )[0].getStore() 

    def result = credentials_store.updateCredentials(
     com.cloudbees.plugins.credentials.domains.Domain.global(), 
     c, 
     new AWSCredentialsImpl(c.scope, id, accessKey, secKey,c.description) 
     ) 

    if (result) { 
     println "password changed for ${accessKey}" 
    } else { 
     println "failed to change password for ${accessKey}" 
    } 
} else { 
    println "could not find credential for ${accessKey}" 
} 
}