Как войти в реестр Docker Azure из конвейера Jenkins с помощью withCredential возвращает ошибку TTY - PullRequest
0 голосов
/ 19 сентября 2018

В простом jenkinsfile, как показано ниже:

pipeline {
agent {
    label 'my-agent'
}

stages {
    stage ('Docker version') {
        steps {
            sh 'docker --version'
        }
    }

    stage ('Docker Login Test') {
        steps {
            script {
                withCredentials([usernamePassword(credentialsId: 'mycredentials', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASSWORD')]) {

                    echo "docker login naked"
                    sh "docker login myAzureRepo.azurecr.io -u admin -p 1234"

                    echo "docker login protected"
                    sh "docker login myAzureRepo.azurecr.io -u $DOCKER_USER -p $DOCKER_PASSWORD" 
                }
            }
        }
    }
}

Когда используются открытые учетные данные, я получаю успешный вход в систему и даже пытаюсь выдвинуть изображения, и работает нормально.

Нокогда я получаю пароль из хранилища учетных данных, я получаю следующую ошибку от jenkins.

вход в docker myAzureRepo.azurecr.io -u **** Ошибка: невозможно выполнить интерактивный вход с устройства, не поддерживающего TTY

1 Ответ

0 голосов
/ 19 сентября 2018

Попробовав много разных способов, один сработал.Необходимо указать имя пользователя, в качестве переменной можно передать только пароль.

Поэтому вместо

sh "docker login myAzureRepo.azurecr.io -u $DOCKER_USER -p $DOCKER_PASSWORD"

я использовал

sh "docker login myAzureRepo.azurecr.io -u admin -p $DOCKER_PASSWORD"

И работал нормально.По крайней мере, пароль скрыт.

Реестр в примерах сделан специально, реестр, над которым я работаю, имеет другое имя и учетные данные.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...