通过Jenkins上的脚本在节点上永久运行后台进程,让Jenkins成功构建

时间:2014-03-28 03:59:18

标签: jenkins

我正在通过脚本运行后台进程,当Jenkin开始构建时调用此脚本。但是,jenkins构建卡住并且在查看控制台时似乎正在运行该进程并等待它完成。

这个过程永远不会完成,将其视为服务器监听其客户端。每次构建我触发都会杀死服务器进程并重新启动进程,所以我完全可以处理这种情况。

有什么办法,我可以成功建立詹金斯吗?

2 个答案:

答案 0 :(得分:8)

确切的细节取决于您的操作系统(您没有告诉),但Jenkins wiki有一个关于此的页面:https://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build

答案 1 :(得分:0)

你可以做一个技巧来释放Jenkins线程。

您可以做的是通过ssh连接执行bash脚本并将其发送到后台,同时在某处保存进程的pid,以便您可以进一步检查。

命令的格式为:

ssh -n _hostname_ "_commands_ & echo \$! > \"_path_to_pid_file_\"" &

永无止境的程序示例:

ssh -n myhost.domain.com "tail -f /var/log/my.log & echo \$! > \"$WORKSPACE/pid\"" &

此示例将生成尾部进程,该进程将永远侦听/var/log/my.log文件中的新更改,并将其pid存储在$ WORKSPACE / pid文件中。

当从Jenkins作业执行时,ssh进程将立即退出,而发送到后台的命令将在指定的主机中继续执行。

我这样做是为了始终保持我在构建服务器场中运行的一个服务与存储库中对它的最新代码修改同步。 只需要一个ssh'进入目标机器的工作,然后终止进程,更新服务并重新启动它。

这可能有点麻烦,但效果很好!