У меня есть 2 экземпляра aws ubuntu: 1-й сервер и 2-й сервер.
Ниже приведен мой сценарий конвейера jenkins, который создает образ докера, запускает контейнер на 1-м сервере и отправляет изображение в репозиторий концентратора докеров. Работает нормально.
Я хочу вытащить образ и развернуть его на 2-м сервере.
Когда я использую ssh для 2-го сервера через сценарий конвейера ниже, но он входит на 1-й сервер, даже если учетные данные ssh ('my-ssh-key') принадлежат 2-му серверу. Я смущен тем, как он регистрируется на 1-м сервере, и я проверил сенсорные команды, поэтому файл создается на 1-м сервере.
pipeline {
environment {
registry = "docker-user/docker-repo"
registryCredential = 'docker-cred'
dockerImage = ''
}
agent any
stages {
stage('Cloning Git') {
steps {
git url: 'https://github.com/git-user/jenkins-flask-tutorial.git/'
}
}
stage('Building image') {
steps{
script {
sh "sudo docker build -t flask-app-one ."
sh "sudo docker run -p 5000:5000 --name flask-app-one -d flask-app-one "
sh "docker tag flask-app-one:latest docker-user/myrepo:flask-app-push-test"
}
}
}
stage('Push Image') {
steps{
script {
docker.withRegistry( '', registryCredential ) {
sh "docker push docker-user/docker-repo:flask-app-push-test"
sshagent(['my-ssh-key']) {
sh 'ssh -o StrictHostKeyChecking=no ubuntu@2ndserver && cd /home/ubuntu/ && sudo touch test-file && docker pull docker-user/docker-repo:flask-app-push-test'
}
}
}
}
}
Мой вопрос: как войти на второй сервер и вытащить изображение докера на второй сервер через сценарий конвейера Дженкинса? Помогите мне, где я делаю не так.
authorized_keys
command
запуском сценария iedeploy.sh
. который существует на удаленном сервере с командами для развертывания изображений и использованияssh_config
, чтобы скрыть сведения о соединении (например,User
) для хоста. Тогда это простоssh 2ndserver
на этапе вашего конвейера. - person masseyb   schedule 29.09.2020ssh
командой, вы&&
объединяете команды вместе (например, еслиssh
возвращает0
, тогдаcd ...
- вы не хотите, чтобыssh
выходил), когда вы хотите выполнить команды на удаленном хосте. (например,ssh -o StrictHostKeyChecking=no ubuntu@2ndserver "cd /home/ubuntu/ && ..."
). Этот ответ правильный. - person masseyb   schedule 29.09.2020agent
для начальных этапов, а затем второй сервер какagent
для последующих этапов.agent any
блокирует вас здесь. - person Matt Schuchard   schedule 29.09.2020