Как передать учетные данные Дженкинса в Gradle?

Я использую подключаемый модуль jib Gradle, чтобы создать образ докера и отправить его в реестр контейнеров Azure. Я добавил учетные данные пользователя и пароля в Jenkins, и мне нужно передать их Gradle. Получая доступ или передавая учетные данные в Gradle, они маскируются. Надеюсь, ты сможешь мне помочь. Вот фрагменты кода:

build.gradle (конфигурация jib):

jib {
    to {
        image = "myacr.azurecr.io/" + project.name
        tags = ["latest"]
        auth {
            // retrieve from Jenkins
            username System.properties['ACR_CREDENTIALS_USR']
            password System.properties['ACR_CREDENTIALS_PSW']
        }
    }
    container {
        jvmFlags = ["-Xms512M",  "-Xmx1G"]
        ports = ["5000/tcp", "8080/tcp"]
    }    
}

Jenkinsfile:

pipeline {
...
    environment {
        ACR_CREDENTIALS = credentials('myproject-acr') 
    }

    stages {
        ...
        stage('Push Docker Image to Registry') {
            steps {
                sh "./gradlew jib -PACR_CREDENTIALS_USR=${env.ACR_CREDENTIALS_USR} -PACR_CREDENTIALS_PSW=${env.ACR_CREDENTIALS_PSW}"
            }
        }
...

РЕДАКТИРОВАТЬ: у меня была опечатка в моем имени пользователя


person ndueck    schedule 25.10.2019    source источник
comment
Что ж, поправьте меня, если я ошибаюсь, но именно так должен вести себя вспомогательный метод credentials() - маскировать учетные данные, когда они отражаются в журналах, но все же передавать реальные значения в среду и любые утилиты, запрашивающие их. Например, если вы запишете их в файл, вы увидите реальные значения, а не *****.   -  person Dibakar Aditya    schedule 25.10.2019
comment
Итак, как передать учетные данные в среду? Блок среды в Jeninsfile не сохраняет эти значения как переменные среды. Я не мог получить их в градиенте (используя System.env ['ACR_CREDENTIALS_USR'])   -  person ndueck    schedule 28.10.2019
comment
У меня была опечатка в моем имени пользователя: / Доступ к переменной среды в gradle работает.   -  person ndueck    schedule 28.10.2019
comment
Приятно знать, что это сработало. Вы можете закрыть вопрос примечанием или ответом на то же самое.   -  person Dibakar Aditya    schedule 28.10.2019


Ответы (1)


У меня была опечатка в имени пользователя. Передача учетных данных Jenkins в качестве переменных среды работает должным образом. Вот мой код: build.gradle (конфигурация jib):

jib {
    to {
        image = "myacr.azurecr.io/" + project.name
        tags = ["latest"]
        auth {
            // retrieve from Jenkins
            username "${System.env.ACR_CREDENTIALS_USR}"
            password "${System.env.ACR_CREDENTIALS_PSW}"
        }
    }
    container {
        jvmFlags = ["-Xms512M",  "-Xmx1G"]
        ports = ["5000/tcp", "8080/tcp"]
    }    
}

Jenkinsfile:

pipeline {
...
    environment {
        ACR_CREDENTIALS = credentials('myproject-acr') 
    }

    stages {
        ...
        stage('Push Docker Image to Registry') {
            steps {
                sh "./gradlew jib"
            }
        }
...
person ndueck    schedule 28.10.2019