在Jenkinsfile中的远程主机上执行命令

问题描述 投票:3回答:2

我正在尝试ssh到远程主机,然后在远程主机的shell上执行某些命令。以下是我的管道代码。

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',但它会在那里停止并且不执行任何进一步的命令。我想执行在远程主机shell中的ssh命令之后编写的命令。任何帮助表示赞赏。

jenkins jenkins-pipeline jenkins-cli
2个回答
0
投票

我会尝试这样的事情:

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

0
投票

我解决了这个问题

script 
{
    sh """ssh -tt login@host << EOF 
    your command
    exit
    EOF"""
}
© www.soinside.com 2019 - 2024. All rights reserved.