侧边栏壁纸
博主头像
一朵云的博客博主等级

拥抱生活,向阳而生。

  • 累计撰写 67 篇文章
  • 累计创建 25 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

Jenkins -- 基于tomcat的一键部署

一朵云
2021-01-05 / 0 评论 / 2 点赞 / 7850 阅读 / 4200 字

背景

  有一个通过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、新建任务 -- 构建一个自由风格的软件项目

image.png

image.png

2、配置Jenkins内容

①、添加描述信息

image.png

②、添加git仓库地址和证书(ssh)

image.png

③、添加触发事件(避免手动构建)

image.png

④、构建环境勾选时间组件

image.png

⑤、选择构建中的“执行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

image.png

  最后git提交代码就会通知jenkins进行自动构建。

总结

  以上是提供个基于tomcat自动化部署的思路,本人并未进行实操,下一篇将会进行SpringBoot项目的自动化部署实操。

2

评论区