jenkins配置自动部署java程序

jenkins配置自动部署java程序

任务背景

该项目包含4个程序包:a.jar,b.jar,c.jar,d.jar,每次启动前需要修改程序中的配置文件(修改数据源配置),然后按照先后顺序启动。

任务目标

1.利用jenkins拉取代码,且在打包前就修改好配置文件
2.打好包后,将4个程序包传输至测试服务器,并远程执行事先写好的启动脚本

配置步骤

1.先新建一个Maven任务,配置好源码地址以及build配置
在这里插入图片描述在这里插入图片描述

2.完成上述配置后,构建一次,看看工作空间的内容
这里显示的就是这个工程的代码结构,即从git拉取代码后在jenkins工作空间的展示情况
在这里插入图片描述

3.修改配置文件
这次需要修改2个配置文件,一个是appr-law-items-service.jar中的application.yml,一个是appr-law-regulation-service中的application.yml

修改配置文件,利用的sed命令
可以在Pre Steps中添加“执行shell”

rm -f ${WORKSPACE}/apr-aw-api-gateway/target/*.jar 
rm -f ${WORKSPACE}/appr-law-items-service/target/*.jar 
rm -f ${WORKSPACE}/appr-law-registry-eureka/target/*.jar 
rm -f ${WORKSPACE}/appr-law-regulation-service/target/*.jar 
sed -r -i 's#192.xxx:3306/law_item#192.1xxx:3306/law_item#g' ${WORKSPACE}/appr-law-items-service/src/main/resources/application.yml 
sed -r -i 's#password: 123#password: 123456#g' ${WORKSPACE}/appr-law-items-service/src/main/resources/application.yml 
sed -r -i 's#192.xxx:3306/law_item#192.xxx:3306/law_item#g' ${WORKSPACE}/appr-law-regulation-service/src/main/resources/application.yml 
sed -r -i 's#password: 123#password: 123456#g' ${WORKSPACE}/appr-law-regulation-service/src/main/resources/application.yml

在这里插入图片描述

这里的关键在于,如何找到application.yml文件的位置(注意是打包前这个文件的路径)
开始我找的是 “appr-law-items-service / target / classes /"下的application.yml
在这里插入图片描述

后来发现不对,改这个文件没有效果(这个是打包后的文件了)
后来又找到 appr-law-items-service / src / main / resources /的application.yml
在这里插入图片描述

这个是源码中的配置文件,修改这个文件就会生效
改动位置如下
在这里插入图片描述

经过上述配置就达到了打包前修改配置文件了目的(也可以下载打包好的jar文件,解压看看配置文件是否修改成功)

4.方法一利用send build artifacts over ssh 插件配置远程部署
jenkins安装在154服务器,现在需要把打好的程序包传输到133服务器,并在133服务器进行远程部署

在构建后操作中添加send build artifacts over ssh 插件
在这里插入图片描述

Transfer Set Source files:需要上传的文件(相对于工作区的路径。看后面的配置可以填写多个,默认用,分隔)(直接到工作空间中找到这个文件,拷贝目录即可)
在这里插入图片描述

Remote directory:远程目录
Exec command:把你要执行的命令写在里面(这里我写的是切换到ZFSXK目录,然后执行事先写好的启动文件)
高级:
Flatten files:只上传文件,不创建目录(除了远程目录)

最终构建完成后,打开133服务器,切换到ZFSXK目录,查看,如下
显示传输过来的4个jar包,且执行了start.sh文件
在这里插入图片描述

start.sh是事先写好的启动文件,写完赋予执行权限执行即可

#! /bin/sh

jps -l | grep a.jar | awk  '{print $1}'  | xargs kill -9
jps -l | grep b.jar | awk  '{print $1}'  | xargs kill -9
jps -l | grep c.jar | awk  '{print $1}'  | xargs kill -9
jps -l | grep d.jar | awk  '{print $1}'  | xargs kill -9

cd /u01/ZFSXK
nohup /u01/jdk1.8.0_11/bin/java -jar a.jar >euceka.log 2>&1 &
echo "启动a程序"

nohup /u01/jdk1.8.0_11/bin/java -jar b.jar >gateway.log 2>&1 &
echo "启动b程序"

nohup /u01/jdk1.8.0_11/bin/java -jar c.jar >items-service.log 2>&1 &
echo "启动c程序"

nohup /u01/jdk1.8.0_11/bin/java -jar d.jar >regulation-service.log 2>&1 &
echo "启动d程序"

方法二
通过 执行shell命令进行 替换jar包

在这里插入图片描述

export LANG=en_US.UTF-8
PROJECT_PORT=9090
PROJECT_NAME=shanca.jar
OLD_NAME=shanca-2.0.0.jar
LOG_NAME=shanca.log
JAR_HOME=/usr/local/shanca

#睡眠5秒
sleep 5
#根据端口号查询对应的pid
pid=$(netstat -nlp | grep :$PROJECT_PORT | awk '{print $7}' | awk -F"/" '{ print $1 }');
#杀掉对应的进程,如果pid不存在,则不执行
if [  -n  "$pid"  ];  then
    kill  -9  $pid;
    echo "---------------------杀掉jar进程:$pid"
fi

#判断文件夹是否存在,不存在则创建
if [ ! -d "$JAR_HOME/" ];then
mkdir $JAR_HOME/
else
echo "---------$JAR_HOME文件夹已经存在"
fi

#删jar包
if [ ! -d "$JAR_HOME/shancai.jar" ];then
   echo "---------------------$JAR_HOME/shanca.jar  不存在"
else
   rm -rf $JAR_HOME/shanca.jar
   echo "---------------------rm -rf 删除之前jar包"
fi
#改名字
mv $JAR_HOME/$OLD_NAME $JAR_HOME/$PROJECT_NAME
   echo "----------------------shanca-2.0.0.jar更改名字为shanca.jar"
   sleep 5


#启动程序
   source /etc/profile
   nohup java -jar $JAR_HOME/$PROJECT_NAME --server.port=$PROJECT_PORT >$JAR_HOME/$LOG_NAME 2>&1 &
   echo "---------------------启动程序"





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值