1、在jenkins命令行执行cd 命令无效
使用过程中,发现在commond中使用cd是无效的,此时针对不同的服务写了不同的sh脚本,在内部去做目录的切换。
解决方案:
使用source的方式是cd生效:
source /opt/esmp/jenkins/inbox-model.sh
2、启动脚本的tail -f **log,导致build无法完成
在我们的start.sh脚本中,会调用日志查看方法:
log() {
status
if [ ! -z "${pid}" ]; then
log=`lsof -p $pid | grep "logs/.*[0-9]*\.log"| awk '{print $NF}'`
tail -fn 100 $log
fi
}
tail 命令在执行脚本后不会自动停止,导致构建一支进行。
会一直输出日志,导致构建不能停止,提供一个监听listener方法,一段时间后杀死日志进程。
解决方案
如下脚本所示,在执行start.sh时,同时执行listener函数,每五秒去查看日志进程的状态,达到50s后,就杀死日志进程,使脚本执行结束,同时项目构建完成。
#!/bin/bash
# 监听日志进程,一段时间后杀死日志进程,完成构建
listener()
{
while true
do
sleep 5
num= `ps -ef | grep 'inbox_model-3.0.jar' | grep -v grep | wc -l`
flag= 1
echo "$num"
if [[ $num -eq $flag ]]; then
sleep 50
echo "项目已启动,停止日志打印";
ps -ef |grep "/logs/inbox_model" |grep -v grep|awk '{print $2}' |xargs kill
break;
else
echo "项目启动中";
fi
done
}
sleep 5
cd /opt/esmp
# 当文件不存在,即首次部署此项目时,不需要stop
if [ -d "/opt/esmp/inbox-model-3.0" ];then
cd /opt/esmp/inbox-model-3.0
./start.sh stop
cd ../
rm -rf inbox-model-3.0
fi
unzip inbox-model-3.0-bin.zip
cd inbox-model-3.0
./start.sh start & listener
上述的50s可以根据项目实际启动的时间去设置。
3、找不到MANIFEST.MF
构建过程中,可能会存在找不到MANIFEST.MF的问题,这个是start.sh脚本中获取启动参数的文件。找不同通常是在启动构成中没有生成。直接运行start.sh脚本没有问题。
原因
jar: commond not found,在安装jdk时候没有建立软连接,导致jar命令找不到。
解决方案
在/usr/bin目录下创建jar的软连接
cd /usr/bin
ln -s /usr/java/jdk1.8.0_172-amd64/bin/jar jar
4、环境变量不生效问题
发现在有些服务器没有此问题,个别服务器存在脚本执行始终不生效的问题,还是环境变量导致的问题。
解决方案
在脚本中增加 source /etc/profile
解决方案5、硬盘被占满问题
jenkins构建过程很占用硬盘空间,当硬盘被占满后,会导致无法构建、在配置中,git,SSH等凭证无法选择而报错,如果突然出现这样的问题,可以考虑是硬盘的问题。
解决办法
1)新建项目要选择丢弃旧构建的参数,并将参数设置的小一点,通常来说历史构建对我们来讲是没用的。
2)构建过程中有两个文件占用时很大的(以下两种方式均不会影响后面额构建,通常清理job最有效):
一个是job文件夹,此文件夹内的内容可以直接手动删除;
6、服务器掉电导致项目丢失
解决办法
安装ThinBackup插件
image.png7、项目丢失重新搭建构建无效
在重新搭建项目并且构建后,发现没有反应,只需要删除以前的构建记录就可以了。
image.png
网友评论