У меня есть задание 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?