记录jenkins中所遇到的问题

本文讲述了作者在安装并使用Jenkins时,遇到的问题,如Maven插件缺失、版本回滚设置、JDK兼容性、jar包运行后被清除等,通过配置Maven插件、设置版本回滚脚本、全局JDK配置和使用Postbuildtask插件解决了这些问题。
摘要由CSDN通过智能技术生成

        安装jenkins 之后,在使用maven项目创建任务时,遇到了一系列的问题,导致项目运行不起来,下面就列出所遇到的问题:

1  创建任务时没有maven选项,这个需要在插件管理里面下载相应的maven插件

2 版本回滚问题以及清除历史,在配置项里面设置

关于回滚问题应该这样设置 定义变量以及值选项,写脚本进行相应的操作,具体如下

 

 

case $deploy_environment  in
  deploy)
    echo "deploy $deploy_environment"
    mvn install -Dmaven.test.skip=true -e
    path="${WORKSPACE}/bak/${BUILD_NUMBER}"      #创建每次要备份的目录
    echo "$path"
    echo "-d $path"
    if [ -d $path ];
    then
        echo "The files is already  exists "
    else
        mkdir -p  $path
    fi
    \cp -f $WORKSPACE/migrate-web/target/*.jar $path        #将打包好的jar包备份到相应目录,覆盖已存在的目标
    echo "Completing!"
    ;;
  rollback)
   	echo "rollback $deploy_env  version=$version"
    cd ${WORKSPACE}/bak/$version            #进入备份目录
    if [ -d ${WORKSPACE}/migrate-web/target/ ];        #这里migrate-web是你打包的单模块的名字
    then
      echo "The files is already  exists "
    else
       mkdir -p  ${WORKSPACE}/migrate-web/target/
    fi
    \cp -f *.jar ${WORKSPACE}/migrate-web/target/       #将备份拷贝到程序打包目录中,并覆盖之前的jar包
    ;;
  *)
  exit
      ;;
esac

再新增一个shell命令 来删除备份

ReservedNum=5  #保留文件数
FileDir=${WORKSPACE}/bak/
date=$(date "+%Y%m%d-%H%M%S")
 
cd $FileDir   #进入备份目录
FileNum=$(ls -l | grep '^d' | wc -l)   #当前有几个文件夹,即几个备份
 
while(( $FileNum > $ReservedNum))
do
    OldFile=$(ls -rt | head -1)         #获取最旧的那个备份文件夹
    echo  $date "Delete File:"$OldFile
    rm -rf $FileDir/$OldFile
    let "FileNum--"
done 

 3 在运行build的时候,由于之前jdk问题(jenkins 运行是jdk17,项目运行是 jdk8),这样会导致一个问题,控制台总是提示 jdk8不支持日志,所以要把jdk在全局配置里面都配置上,然后在任务设置里面进行jdk选择,这样提示不支持的日志就会不再出现

4 在构建完成后,一些操作都已完成,想进行jar包的运行,在build 里面进行启动,会出现一个问题,即当build完成后,jar启动的进程就会被清除,当所有的命令都执行完成后,进程就会被杀掉,导致项目启动不起来。

 遇到这个问题,令我很头疼,离运行成功就差一小步,马上看到希望之火,一下子被浇灭了。

于是开始网上搜索各种资料,都失败。经过和人讨论后,得出把运行jar的命令搞成一个服务,然后在build中运行此服务,所以我就设立了一个my.service,具体如下

[Unit]
Description=my service
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/bin/sh -c 'jar包运行命令'
ExecStop=/bin/kill -15 $MAINPID

User=root
Group=root

[Install]
WantedBy=multi-user.target

结果测试之后,果然可以,但后续再一想,如果想启动多个jar包,需要写多个服务显然有点繁琐。

继续探索发现,jenkins 在构建完成时,进程就会被清除掉,所以只能在构建完成后操作jar包,经过一番搜询发现了一个方法,就是安装一个插件  Post build task 

script 里面写jar包的运行命令,这样就搞定了 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值