Как передать учетные данные внутри удаленного соединения ssh-agent в конвейер Jenkins - PullRequest
0 голосов
/ 07 мая 2019

У меня есть задание Jenkins, которое имеет единственную цель - перенести один образ докера из реестра в другой.

Команды docker должны быть запущены в удаленном ssh-соединении для безопасности. Мне интересно, как безопасно передать имя пользователя / пароль на это удаленное соединение, возможно, используя учетные данные Jenkins

node {
    stage('Move artifact') {
        GString imageName = "project:imageName"
        sshagent (credentials: ['ssh-credentials']) {
            runSSHCommand("docker pull source.registry/${imageName}", env.DOCKER_HOST)
            runSSHCommand("docker login destination.registry -u=${env.DOCKER_USERNAME} -p=${env.DOCKER_PASSWORD}", env.DOCKER_HOST)
            runSSHCommand("docker tag source.registry/${imageName} destination.registry/${imageName}", env.DOCKER_HOST)
            runSSHCommand("docker push destination.registry/${imageName}", env.DOCKER_HOST)
        }
    }
}

def runSSHCommand(GString command, host) {
    sh 'ssh -tt -o ExitOnForwardFailure=yes -o StrictHostKeyChecking=no ' + host + ' "' + command + '"'
}

Есть ли безопасный способ не использовать $ {DOCKER_USERNAME} и $ {DOCKER_PASSWORD} в переменной среды, но использовать учетные данные от Jenkins?

...