学习JavaJVM · Java虚拟机原理 · JVM上语言·框架· 生态系统

jenkins(四)问题记录

2021-06-10  本文已影响0人  我犟不过你

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文件夹,此文件夹内的内容可以直接手动删除;

另一个是workspace文件夹,次文件可以在界面删除, 清理

6、服务器掉电导致项目丢失

解决办法

安装ThinBackup插件

image.png

7、项目丢失重新搭建构建无效

在重新搭建项目并且构建后,发现没有反应,只需要删除以前的构建记录就可以了。

image.png
上一篇 下一篇

猜你喜欢

热点阅读