簡體   English   中英

使用groovy腳本更新jenkins文件中的AWS憑證

[英]Update aws credential in jenkins file with a groovy script

在我的流程中,我會定期獲得臨時的AWS憑證,並在我的Jenkins文件中需要更新特定的Jenkins Aws憑證。 我該如何更新? 我需要的原因是withRegistry的 Jenkins docker方法需要憑證ID,並且每當我獲得新的AWS密鑰才能使用它時,我就必須更新該憑證。

經過幾次嘗試和錯誤后,我發現了這一點:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM