Как использовать плагин jenkins для имени пользователя с паролем в dsl? - PullRequest
0 голосов
/ 09 октября 2019

Я новичок в jenkins и пытаюсь использовать учетные данные в dsl с помощью плагина учетных данных

template.xml

<com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl>
      <scope>GLOBAL</scope>
      <id>PROD</id>
      <description>prod credentials</description>
      <username>prod</username>
      <password>{{ encrypted_password_prod }}</password
</com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl>

Я определил учетные данные в jenkinsкак имя пользователя с паролем. вышеуказанное зашифрованное значение сохраняется в ANSIBLE.

Мой вопрос заключается в том, как мне вызвать их в моей DSL

Map credentials = [:]

credentialsBinding {
                    credentials.each { key, value ->
                        string("${key}", "${value}")
                    }


.credentials(["TF_VAR_username": "PROD" ,"TF_VAR_password" : "password_prod"])

Ошибка:

22: 11:16 ФАТАЛЬНО: Учетные данные «PROD» имеют тип «Имя пользователя с паролем», где ожидалось «org.jenkinsci.plugins.plaincredentials.StringCredentials»

1 Ответ

1 голос
/ 09 октября 2019

Вы можете поместить учетные данные в хранилище ключей Jenkins (Jenkins -> Учетные данные -> Система -> Глобальные учетные данные -> Добавить учетные данные), а затем ссылаться на них в своем конвейере, используя блок withCredentials, например:

node {
  withCredentials([usernameColonPassword(credentialsId: 'mylogin', variable: 'USERPASS')]) {
    sh '''
      set +x
      curl -u "$USERPASS" https://private.server/ > output
    '''
  }
}

Больше информации здесь: https://jenkins.io/doc/pipeline/steps/credentials-binding/

...