[英]Update aws credential in jenkins file with a groovy script
In my process regularly I get temporary AWS cred and in my Jenkins file I need to update a specific Jenkins Aws crednetial. 在我的流程中,我会定期获得临时的AWS凭证,并在我的Jenkins文件中需要更新特定的Jenkins Aws凭证。 How can I update it? 我该如何更新? The reason that I need is that Jenkins docker method withRegistry requires credential id and I have to update this credential whenever I get new AWS key to be able to use it. 我需要的原因是withRegistry的 Jenkins docker方法需要凭证ID,并且每当我获得新的AWS密钥才能使用它时,我就必须更新该凭证。
After several try and error I found this: 经过几次尝试和错误后,我发现了这一点:
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}"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.