выполнять команды на удаленном хосте в Jenkinsfile - PullRequest
3 голосов
/ 20 марта 2019

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

pipeline {
    agent any
    environment {
        // comment added
         APPLICATION = 'app'
         ENVIRONMENT = 'dev'
         MAINTAINER_NAME = 'jenkins'
         MAINTAINER_EMAIL = 'jenkins@email.com'
    }
    stages {
         stage('clone repository') {
             steps {
                 // cloning repo
                 checkout scm
             }
         }
         stage('Build Image') {
             steps {
                 script {
                     sshagent(credentials : ['jenkins-pem']) {
                        sh "echo pwd"
                        sh 'ssh -t -t ubuntu@xx.xxx.xx.xx -o StrictHostKeyChecking=no'
                        sh "echo pwd"
                        sh 'sudo -i -u root'
                        sh 'cd /opt/docker/web'
                        sh 'echo pwd'
                    }
                 }
             }
         }
     }
}

Но после выполнения этого задания он успешно выполняет sh 'ssh -t -t ubuntu@xx.xxx.xx.xx -o StrictHostKeyChecking=no', но останавливается и не выполняет никаких дальнейших команд.Я хочу выполнить команды, которые пишутся после команды ssh внутри оболочки удаленного хоста.любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Я решаю эту проблему

script 
{
    sh """ssh -tt login@host << EOF 
    your command
    exit
    EOF"""
}
0 голосов
/ 20 марта 2019

Я бы попробовал что-то вроде этого:

sshagent(credentials : ['jenkins-pem']) {
  sh "echo pwd"
  sh 'ssh -t -t ubuntu@xx.xxx.xx.xx -o StrictHostKeyChecking=no "echo pwd && sudo -i -u root && cd /opt/docker/web && echo pwd"'
}
...