背景
有一个通过maven管理依赖;git管理代码版本;tomcat进行部署的java项目。需要在开发完成迭代并推送到git上时,我们通过Jenkins进行一键部署。
前提条件
- linux正常安装git,且连同了远程仓库;
- linux正常安装了maven;
- linux正常安装了tomcat。
原理说明
通过在Jenkins上编写一段shell脚本文件,自动进行打包部署;另外再封装一段shell脚本存入工作空间,脚本内容包含:
- 从git仓库拉取最新的代码。
- 执行maven clean指令。
- 再执行maven install指令。
- 停掉Tomcat。
- 备份原项目文件。
- 删除原项目文件。
- 复制并重新命名maven install出来的程序包。
- 启动Tomcat。
根据个人需求将下列shell脚本写入jenkins工作空间:/var/lib/jenkins/workspace/,并命名为rebuil.sh。
#!/usr/bin/env bash
#编译+部署order站点
#需要配置如下参数
# 项目路径, 在Execute Shell中配置项目路径, pwd 就可以获得该项目路径
# export PROJ_PATH=这个jenkins任务在部署机器上的路径
# 输入你的环境上tomcat的全路径
# export TOMCAT_APP_PATH=tomcat在部署机器上的路径
### base 函数
killTomcat()
{
pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
echo "tomcat Id list :$pid"
if [ "$pid" = "" ]
then
echo "no tomcat pid alive"
else
kill -9 $pid
fi
}
cd $PROJ_PATH/order
mvn clean install
# 停tomcat
killTomcat
# 备份原来工程
cp $PROJ_PATH/order/target/order.war $PROJ_PATH/order/target/order_`date +%y%m%d%H%M%S`.war.bak
# 删除原有工程
rm -rf $TOMCAT_APP_PATH/webapps/ROOT
rm -f $TOMCAT_APP_PATH/webapps/ROOT.war
rm -f $TOMCAT_APP_PATH/webapps/order.war
# 复制新的工程
cp $PROJ_PATH/order/target/order.war $TOMCAT_APP_PATH/webapps/
cd $TOMCAT_APP_PATH/webapps/
cp order.war ROOT.war
# 启动Tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh
Jenkins中的操作
1、新建任务 -- 构建一个自由风格的软件项目
2、配置Jenkins内容
①、添加描述信息
②、添加git仓库地址和证书(ssh)
③、添加触发事件(避免手动构建)
④、构建环境勾选时间组件
⑤、选择构建中的“执行shell”,按要求执行tomcat
# jenkins默认在build结束后会kill掉所有的衍生进程,填写该配置可避免
BUILD_ID=DONTKILLME
# 重新加载配置参数
. /etc/profile
# 获取git拉取代码后存放的路径
export PROJ_PATH=`pwd`
# 存放Tomcat的安装路径
export TOMCAT_APP=/root/apache-tomcat-10.0.21
# 执行自定义的shell脚本
sh $PROJ_PATH/rebuild.sh
最后git提交代码就会通知jenkins进行自动构建。
总结
以上是提供个基于tomcat自动化部署的思路,本人并未进行实操,下一篇将会进行SpringBoot项目的自动化部署实操。
评论区