1. 怀疑 jenkins 没有拉到最新的包
解决:
清除 jenkins 工作空间
2. jenkins 自动构建时, start.sh 脚本已经执行成功,但是应用总是启动后自动退出了
进程没有起来,从 pid 文件来看,start.sh 确实已经启动过,从 log 中来看,应用启动后,就莫名的 shutdown 了
分析:
首先,怀疑是不是代码问题,导致应用起不来。这种情况排除。
接着,在 jenkins 上更改构建脚本,让 start.sh 的执行日志输出到 start.log ==> ./start.sh > start.log 2>&1,看有没有错误输出
再次部署,居然成功了,进程起来了。查看 start.log 输出的是应用启动日志。
这样,怀疑 start.sh 是不是没有将脚本执行内容重定向输出
解决:
更改 start.sh,增加 >/dev/null 2>&1
nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_JMX_OPTS -jar pkg/*.jar --spring.config.location=config/application.yml --spring.profiles.active=prod >/dev/null 2>&1 & echo $! > pid
3. jenkins 构建脚本中有一步 rm deploy/* 的操作,当 deploy 包下面没有文件时,会导致 rm 报错,从而构建部署失败
解决:
临时解决方案,在 deploy 目录下 touch 一个文件,再点击构建
部署脚本(start.sh)注意的地方:
1. -Djava.io.tmpdir=/app/xxx/tmp 指定的临时目录是否存在
2. 启动脚本将日志重定向到 nohub.out (或其他文件 system.log),这样可以看全量日志查找问题 (springboot 项目)