带凭证的主动选择参数

时间:2018-11-19 16:44:00

标签: jenkins jenkins-groovy

我试图访问存储在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

2 个答案:

答案 0 :(得分:0)

我为我的一项工作尝试了“主动选择参数”中的类似操作,但没有任何效果。我改用以下内容来防止对凭据进行硬编码

定义您的凭据,例如。在您的情况下,AWS_ACCESS_KEY_IDAWS_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.usernamecreds.password

我不确定它是否安全。