jenkins中利用Publish Over SSH插件远程上传发布包并且执行远程脚本启动应用的时候,会遇到ssh的timeout、远程进程没有启动起来,若勾线pty的情况下发现标准输出被接管,无法输出日志的情况
通过如下方式解决:
jenkins配置
启动脚本如下
echo "启动应用"
#后台启动,且指定了开发环境和内存
nohup /usr/local/java/bin/java -Djava.io.tmpdir=/home/user/javatmp/ -jar /home/user/xxx.jar --spring.profiles.active=product 2>&1|/usr/bin/cronolog /home/user/log-%Y-%m-%d.log &
说明
jenkins会kill调自己启动的衍生进程,勾选“exec in pty”会让任务在后台运行,并同时在command命令中需要修改BUILD_ID,同时添加sleep时发现,应用虽然能正常启动,但脚本的启动命令的标准输出被接管了,访问应用后的日志无法查看。此时在启动脚本时前面加上nohup方式启动,这样就保证了jenkins进行kill调了nphup同时没有接管标准输出