Jenkins在运行远程脚本后没有停止工作

时间:2014-11-28 06:32:20

标签: shell jenkins executable-jar

我正在使用jenkins构建可执行jar文件并复制到远程服务器。复制后,我需要在远程服务器上运行jar文件。我正在使用SSH Plugin来执行远程脚本。

远程脚本如下所示:

startServer.sh

pkill -f MyExecutable
nohup java -jar /home/administrator/app/MyExecutable.jar &

Jenkins能够执行脚本文件,但是在执行后它不会停止作业。它仍在继续该过程并显示jenkins控制台中的日志。这会产生问题,因为这些连续的作业会阻止其他作业执行。

执行脚本后如何停止作业。

3 个答案:

答案 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
     '''
)