jenkins+maven+tomcat项目自动部署

操作环境

OS centos7.3
JDK jdk1.8
maven maven3


当然这篇文章的前提是你已经在服务器上安装部署了jenkins,如果没有可以看我的另一篇文章
https://www.jianshu.com/p/ebeebcb8aafb
首先列出所用到的所有命令,并予以解释

#jenkins 启动
systemctl start jenkins
#jenkins 停止
systemctl stop jenkins
#jenkins 重启
systemctl restart jenkins
#更改相关jenkins服务文件后 需要执行重新加载服务的命令
systemctl daemon-reload
#创建系统用户命令
useradd username
#更改文件夹组权限
chown -R username:username  xxx

进入正文

步骤: 安装必要的插件 => 设置jenkins全局变量 => 更改运行用户 => 创建任务 => 配置任务 => 编写shell脚本 =>Run

1、 安装必要插件

直接运行jenkins后,打开http:/你的IP:设置的端口/pluginManager/ 即 系统管理 => 管理插件


9353649-09a01ad4dd50c2f5.png
插件管理界面

在搜索框分别输入,有如下作用的插件进行安装

#maven编译插件
Maven Integration 
#构建后脚本执行插件
PostBuildScript Plugin 
#subversion插件
Subversion Plug-in

2、 设置jenkins全局变量

jenkins在创建任务时需要一些全局变量 对应svn地址的svn账号密码 JDK路径 maven路径
此项可以留到配置任务环节再进行

3、更改jenkins在操作系统运行的用户

这一步是为了为后面编写shell脚本,提供足够的权限;提高系统安全性。

#使用useradd命令创建一个系统用户
useradd userjs
#停止jenkins服务
systemctl stop jenkins
# 打开配置文件
$ vi /etc/sysconfig/jenkins 
# 修改$JENKINS_USER变量为userjs
JENKINS_USER="userjs" 

#修改Jenkins相关文件夹用户权限(必须修改)
$ chown -R userjs:userjs /var/lib/jenkins
$ chown -R userjs:userjs /var/log/jenkins
$ chown -R userjs:userjs /var/cache/jenkins
#更改相关jenkins服务文件后 需要执行重新加载服务的命令(这一步非必须得视情况而定)
systemctl daemon-reload
#jenkins 启动
systemctl start jenkins

4、 创建任务

在浏览器打开你的jenkins界面,点击左侧的 新建任务 进入新建任务页


9353649-7d317a43b201d38a.png
新建任务页

输入任务名称(最好英文)
点击 构建一个maven项目
点击确定按钮
创建任务完成

5、配置任务

在配置任务界面可以看到一排tab切页


9353649-5e4592c67ad05abf.png
任务配置界面

这里红色箭头的都是重点关注的,其他先可以不用关注
下面就开始一步步配置

①General
9353649-6e74cbd876ce8627.png
设置构建丢弃
②源码管理
9353649-f0d13f642adb0054.png
源码管理

这个地方需要注意了,如果你是第一次配置的话,需要在c步骤点击按钮去另外的界面添加,你要拉取的项目的svn账号密码信息


9353649-9bf35becc062cfb6.png
全局变量

然后,在b步骤里面选择你刚刚添加的那个条目

③Build

构建这个环节是比较重要的,这里我们分两种类型的示例
a:单模块项目 b多模块聚合项目

b:整个项目就一个pom.xml文件
b:整个项目有多个pom.xml文件 通常的文件构造如下
9353649-efe61b8693f63404.png
多模块聚合项目

分情况配置

a
9353649-89e5fe43eceabf21.png
单模块项目编译配置
b
9353649-2f9185c91d8a39cb.png
多模块聚合项目

这里只需要配置 聚合项目的父级pom即可,因为父级项目里面指定了其他模块,所以maven会按照pom指定的顺序去编译

④构建后操作
9353649-54aff067147e86dc.png
选择构建后操作步骤

9353649-50b9fabc66cf0c96.png
选择脚本方式

9353649-fd1ed8b0fd0904c6.png
添加generic shell脚本文件路径以及触发事件

现在我们还没写脚本,所以,可以先写一个路径例如/opt/script/test.sh

6、编写shell脚本*****重点

现在相当于准备好了前4步,滴5步只有一半
准备好了前4步,就相当于 我们在利用jenkins 在服务器/var/lib/jenkins/workspace/你的项目名
拉取了一个svn项目 ,并且,利用maven编译 先后执行了 mvn clean 和mvn install 生成了xxx.war文件

需求点

在这一步我们要做的事情是,将这个新生成的war文件放到服务器上指定的tomcat下面,然后启动tomcat服务器,完成自动部署

首先我们来用文字分解一下这个步骤,再进行脚本的编写

①停止正在运行中的tomcat

停止tomcat相信大家都会,但是由于各种原因tomcat原生的shutdown.sh可能经常不能关闭掉tomcat自己本身,所以需要我们去加点料,详细见我的另一篇文章https://www.jianshu.com/p/39a2da8db269

②将jenkins工具帮我们生成的war放到指定的tomcat下

这一步又可以分解一下,因为tomcat下是会有旧war的存在,这就需要我们去备份这个,然后再删除,最后换新:

a.将原有war移动到指定的目录下备份,一般存一份即可
b.删除旧war
c.将新生成的war移动到tomcat webapps下
③启动tomcat

执行tomcat的startup.sh
好的,正常情况下就是这些步骤了,但是按照这个写的脚本可不一定能够正常实现我们的诉求

重要 可能会出现的情况

以我们现在配置的userjs用户的权限,可能不能去执行我们写的脚本,理由很简单 这个用户没有权限,当然给他放大一些权限也是可以的,但是我们生产环境肯定不能这么做的,我们需要一个解决方案,让我们这个用户暂时对某些文件拥有超级权限
说的有点多了,接下来开始放上我的脚本

#!/bin/sh
sh /usr/local/tomcat8/bin/shutdown.sh
echo "执行完tomcat8关闭!!!"
cp /var/lib/jenkins/workspace/xxx/target/xxx.war /usr/local/tomcat8/webapps/
if [ -f "/usr/local/tomcat8/webapps/xxx.war" ];then
   echo "xxx.war到/var/tomcat8_bak/"
   \cp /usr/local/tomcat8/webapps/xxx.war /opt/tomcat8_bak/
      if [ -d "/usr/local/tomcat8/webapps/xxx/" ];then
         rm -rf /usr/local/tomcat8/webapps/xxx/
         rm -rf xxx.war
         echo "已删除tomcat下xxx相关"
      else
         echo "tomcat下没有xxx相关"
      fi
else
   echo "xxx.war文件不存在不能正常备份"
   if [ -d "/usr/local/tomcat8/webapps/xxx/" ];then
      rm -rf /usr/local/tomcat8/webapps/xxx/
      echo "已删除tomcat下xxx相关"
   else
      echo "tomcat下没有xxx相关"
   fi
fi
sh /usr/local/tomcat8/bin/startup.sh && tail -f /usr/local/tomcat8/logs/catalina.out

这个文件就可以实现将新生成的war放到指定tomcat下,备份旧war
接下来还有最后一件很重要的事情
为jenkins的宿主用户userjs指定可以运行我们这个脚本的超级权限

#给予我们这个userjs 运行我们脚本的所有权限
#进入sudo编辑文件
visudo
#添加如下内容 写上你脚本的路径,两个脚本的话用逗号隔开注意中英文切换,一个脚本的话只取第一个逗号之前的内容
##jenkins
userjs  ALL=NOPASSWD: /opt/tomcat1.sh,NOPASSWD: tomcat2.sh,

OK,还有最后一步 将我们写好的sh配置到第5步的构建后脚本路径那里,内容为

sudo /opt/tomcat1.sh

7、Run

点击立即构建 左下角就会出现进度条 点击进度条旁边的查看控制台信息,就能看到脚本输出的信息


9353649-9d63bf4f73534566.png
test任务

最后 在具体操作中还有什么问题的话,或者文中的错误之处可以在下面评论区指出,参考的文章太多了,所以来源就不写了,这个里面80%的内容属于原创,转载请注明出处。

猜你喜欢

转载自blog.csdn.net/weixin_34101784/article/details/87107990