Неполадки при чтении секретов из Jenkins Credential Manager в задании Multi Branch Pipeline с использованием параметра Credential - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть конвейерное задание Jenkins multi branch , которое использует секретное значение в Jenkinsfile:

pipeline {
  agent any
  stages {
    stage('Test') {
      steps {
        echo "DOCKER_REGISTRY_USER is ${env.DOCKER_REGISTRY_USER_NSV}"
      }
    }
  }
}

Секретное значение хранится в Credentials Manager в виде секретного текста с идентификаторомDOCKER_REGISTRY_USER_NSV:

enter image description here

Я пытаюсь прочитать это значение в Jenkinsfile, как показано выше, но я получаю следующий вывод, который выводит значение null для моего секрета:

[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] echo
DOCKER_REGISTRY_USER is null
[Pipeline] sh

Я также пытался ссылаться на секретный текст в моем конвейере следующим образом:

echo "DOCKER_REGISTRY_USER is ${DOCKER_REGISTRY_USER_NSV}"

Но затем я получаю эту ошибку при запуске задания Jenkins:

groovy.lang.MissingPropertyException: No such property: DOCKER_REGISTRY_USER_NSV for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.java:63)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:264)

Я думаю, что мне нужно привязать эти учетные данные к работе, но я не вижу возможности сделать это для работы с несколькими ветвями трубопровода, как это можно сделать для работы по фристайлу или трубопроводу.

Как использовать секретные учетные данные в задании Multi Branch Pipeline?

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете использовать credentials () вспомогательный метод для архивирования вашей цели.

pipeline {
    agent any

    environment {
        DOCKER_REGISTRY_USER = credentials('DOCKER_REGISTRY_USER_NSV') 
                               // put the ID of credential as credentials()'s parameter.
    }

    stages {

        stage('Test') {
            steps {
                echo "DOCKER_REGISTRY_USER is ${DOCKER_REGISTRY_USER}"
            }
        }
   }

}
...