我正在尝试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
命令之后编写的命令。任何帮助表示赞赏。
答案 0 :(得分:0)
我会尝试这样的事情:
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"'
}
答案 1 :(得分:0)
我解决了这个问题
script
{
sh """ssh -tt login@host << EOF
your command
exit
EOF"""
}