Параметр активного выбора с учетными данными - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь получить доступ к учетным данным, хранящимся в 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 голосов
/ 28 февраля 2019

Вы можете попробовать это:

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 в своем скрипте.

Я не уверен, что это безопасно.

0 голосов
/ 20 ноября 2018

Я попробовал нечто подобное в параметре «Активный выбор» для одного из моих заданий, но ничего не получалось.Вместо этого я использовал нижеприведенное для предотвращения жесткого кодирования учетных данных

Определите ваши учетные данные, например,в вашем случае 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}

...