web-dev-qa-db-ja.com

Jenkinsfileのリモートホストでコマンドを実行する

リモートホストにsshして、リモートホストのシェルで特定のコマンドを実行しようとしています。以下は私のパイプラインコードです。

pipeline {
    agent any
    environment {
        // comment added
         APPLICATION = 'app'
         ENVIRONMENT = 'dev'
         MAINTAINER_NAME = 'jenkins'
         MAINTAINER_EMAIL = '[email protected]'
    }
    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 [email protected] -o StrictHostKeyChecking=no'
                        sh "echo pwd"
                        sh 'Sudo -i -u root'
                        sh 'cd /opt/docker/web'
                        sh 'echo pwd'
                    }
                 }
             }
         }
     }
}

しかし、このジョブを実行すると、sh 'ssh -t -t [email protected] -o StrictHostKeyChecking=no'は正常に終了しましたが、そこで停止し、それ以上のコマンドは実行されません。リモートホストのシェル内でsshコマンドの後に記述されているコマンドを実行したい。どんな助けでもありがたいです。

5
Shoaib Iqbal

この問題を解決します

script 
{
    sh """ssh -tt login@Host << EOF 
    your command
    exit
    EOF"""
}
2
Alexey