我正在使用jenkins构建可执行jar文件并复制到远程服务器。复制后,我需要在远程服务器上运行jar文件。我正在使用SSH Plugin
来执行远程脚本。
远程脚本如下所示:
startServer.sh
pkill -f MyExecutable
nohup java -jar /home/administrator/app/MyExecutable.jar &
Jenkins能够执行脚本文件,但是在执行后它不会停止作业。它仍在继续该过程并显示jenkins控制台中的日志。这会产生问题,因为这些连续的作业会阻止其他作业执行。
执行脚本后如何停止作业。
答案 0 :(得分:2)
最后,我能够解决问题。我发布它是为了别人的缘故。
我使用了ssh -f user @ server ....
这解决了我的问题。ssh -f root@${server} sh /home/administrator/bin/startServer.sh
答案 1 :(得分:0)
我使用发布SSH插件遇到了类似的问题。出于某种原因,Jenkins在执行远程脚本后没有停止。选择以下配置可解决问题。
SSH发布者>转移>高级>执行pty
希望它可以帮助别人。
答案 2 :(得分:0)
我的朋友,我为你找到了解决方案。
确保在您使用的管道中添加 usePty: true,这将启用需要 tty 的 sudo 命令的执行(并且可能在其他情况下也有帮助。)
sshTransfer(
sourceFiles: "target/*.zip",
removePrefix: "target",
remoteDirectory: "'/root/'yyyy-MM-dd",
execTimeout: 300000,
usePty: true,
verbose: true,
execCommand: '''
pkill -f MyExecutable
nohup java -jar /home/administrator/app/MyExecutable.jar &
echo $! >> /tmp/jenkins/jenkins.pid
sleep 1
'''
)