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
1
A
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}"
}
}