我试图访问存储在Jenkins中的凭据,而不必在脚本本身中对其进行硬编码。
#!/usr/bin/env groovy
withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'GroovyAWSScMgr', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) {
return ["${env.AWS_ACCESS_KEY_ID}"]
}
我尝试过:
return [AWS_ACCESS_KEY_ID]
return [env.AWS_ACCESS_KEY_ID]
return ["${env.AWS_ACCESS_KEY_ID}"]
return ["${env.AWS_ACCESS_KEY_ID}"]
结果继续为NULL
答案 0 :(得分:0)
我为我的一项工作尝试了“主动选择参数”中的类似操作,但没有任何效果。我改用以下内容来防止对凭据进行硬编码
定义您的凭据,例如。在您的情况下,AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
具有适当的值,例如Manage Jenkins -> Configure System -> Global properties
中的环境变量,并在脚本中检索它们
import jenkins.model.*
instance = Jenkins.getInstance()
globalNodeProperties = instance.getGlobalNodeProperties()
aws_access_key_id = ''
aws_secret_key = ''
globalNodeProperties.each {
envVars = it.getEnvVars()
if (envVars.get('AWS_ACCESS_KEY_ID') != null) {
aws_access_key_id = envVars.get('AWS_ACCESS_KEY_ID');
}
if (envVars.get('AWS_SECRET_ACCESS_KEY') != null) {
aws_secret_key = envVars.get('AWS_SECRET_ACCESS_KEY');
}
}
您可以在脚本中将它们引用为${aws_access_key_id}
和${aws_secret_key}
答案 1 :(得分:0)
您可以尝试以下方法:
import jenkins.model.*
credentialsId = 'GroovyAWSScMgr'
def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class, Jenkins.instance, null, null ).find{
it.id == credentialsId}
return [creds.username]
您可以在脚本中使用creds.username
和creds.password
。
我不确定它是否安全。