我想使用sshagent插件来部署到远程服务器。
在使用以下语法时,我遇到了如下问题:
pipeline {
agent any
stages {
stage('Deploy') {
steps {
sshagent(['nginx-ec2']) {
// some block
sh "ssh -o StrictHostKeyChecking=no ubuntu@<host_ip>"
sh "whoami"
}
}
}
}
}
获取输出:
[Pipeline] sh (hide)
+ whoami
jenkins
当我希望使用提供的凭据在远程服务器上运行脚本时!!
因此,我不得不以这种方式运行它。
pipeline {
agent any
stages {
stage('Deploy') {
steps {
sshagent(['nginx-ec2']) {
// some block
sh "ssh -o StrictHostKeyChecking=no -l ubuntu <host_ip> 'whoami && \
sudo apt update && sudo apt install -y docker.io && \
sudo usermod -aG docker ubuntu && \
source .bashrc && \
docker run -d nginx'"
}
}
}
}
}
有没有一种“干净”的方法在Ubuntu上以非Jenkins用户的身份在远程服务器上运行脚本?
编辑:
我知道我需要在ssh命令下运行它,而不是作为单独的sh脚本运行,否则它将作为Jenkins运行,并且我能够按以下方式以脚本方式运行它。
这就是为什么我想知道是否有更好的方法以声明性方式编写它。
node {
stage('Deploy'){
def dockerRun = "whoami && \
sudo apt update && sudo apt install -y docker.io && \
sudo usermod -aG docker ubuntu && \
source .bashrc && \
docker run -d nginx "
sshagent(['nginx-ec2']) {
sh "ssh -o StrictHostKeyChecking=no ubuntu@<host_ip> '${dockerRun}' "
}
}
}
感谢您的选择,
whoami
。尝试过语法生成器了吗? - Ian Wwhoami
命令。 - Thanh Nguyen Vanwhomai
替换为uname
。 - Ian W