Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署

Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署

1、环境需求

本帖针对的是Linux环境,Windows或其他系统也可借鉴。具体只讲述Jenkins配置以及整个流程的实现。

  • 1.JDK(或JRE)及Java环境变量配置,我用的是JDK1.8.0_144,网上帖子也很多,不赘述。

  • 2.Jenkins 持续集成和持续交付项目。

  • 3.现有项目及gitlab(SVN或本地路径也行)地址。

  • 4.maven工具及环境变量配置,用于构建和管理任何基于Java的项目。

  • 5.下载解压Tomcat,我用的是Tomcat8。

2、环境准备

1、安装服务

(1)安装JDK、Jenkins和gitlab

JDK yum安装和编译安装都可以;

gitlab 安装详见:gitlab 部署;

tomcat 安装详见:tomcat 服务部署

(2)mave安装

1、下载 maven 包

http://mirrors.cnnic.cn/apache/maven 选择自己需要的maven版本

复制代码
wget https://mirrors.cnnic.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
tar -zxvf apache-maven-3.5.4-bin.tar.gz
2、配置环境变量

(1)配置全局环境变量

vim /etc/profile.d/jenkins_tools.sh

复制代码
#JDK
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export TIME_STYLE='+%Y/%m/%d %H:%M:%S'
​
#maven
export MAVEN_HOME=/data/jenkins_tools/maven-3.5.4
export PATH=${MAVEN_HOME}/bin:$PATH 

使环境变量生效

复制代码
source /etc/profile.d/jenkins_tools.sh 

(2)测试

复制代码
java -version
​
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
复制代码
$ mvn -version
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /data/jenkins_tools/maven-3.5.4
Java version: 1.8.0_144, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_144/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-514.26.2.el7.x86_64", arch: "amd64", family: "unix"

3、Jenkins工具、环境、插件配置

1、全局工具配置

系统管理--->全局工具配置

修改maven默认settings.xml文件,配置git、jdk、maven工具后保存(不要勾选自动安装)。

2、配置全局变量

系统管理--->系统设置--->全局属性

3、安装3个插件

系统管理--->插件管理

(1)Maven Integration plugin 安装此插件才能构建maven项目

(2)Deploy to container Plugin 安装此插件,才能将打好的包部署到tomcat上

(3) mvn配置国内源

4、创建一个Maven工程

1、构建maven项目
2、源码管理

填写git地址信息,添加认证凭据,详见Jenkins持续集成01---Jenkins服务搭建和部署

3、构建触发器,可以根据自己的业务需求定制

① Build whenever a SNAPSHOT dependency is built:检测到gitlab项目代码被重新构建后就触发;

② 轮询 SCM:*/2 * * * * ,每隔2分钟检查一次

4、打包前步骤,根据自己需求可以添加一些操作:如一些shell命令
5、build打包构建

① Root POM:指定pom.xml的文件路径(这里是相对路径)

② Goals and options:mvn的选项,构件参数

6、构建后操作

(1)选择deploy war to a container,部署到tomcat

(2)配置tomcat信息

  • WAR/EAR files:输入war包的相对路径,如我的war包在新建目录的target下

  • context path:输入部署tomcat的名称,就部署在webapps下的目录名

  • add container:增加容器,一般选tomcat 8X就可以。这里的username与password需要到tomcat的conf文件夹中的tomcat-users.xml修改。tomcat URL就是你希望把war包部署到的tomcat所在IP地址,最后面不需要再加斜杠/。

  • tomcat-users.xml中的用户名及密码默认是注释掉的,所以需要修改,也可以直接复制以下代码到</tomcat-users>之前。

复制代码
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager-gui" />
  <role rolename="manager-script" />
  <role rolename="manager-status" />
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="deploy" password="tomcat" roles="manager-gui,manager-script,manager-status" />
  • 然后到tomcat下面webapps/manager/META-INF/context.xml 注销掉红色部分。因为默认tomcat不可以通过外部ip访问管理界面。一定要启动Tomcat,不然等构建等时候会报拒绝连接
复制代码
<Context antiResourceLocking="false" privileged="true" >
  <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

(3)添加tomcat的凭据

7、配置邮件通知

增加构建后操作--->Editable Email Notification

使用邮件同事前,需要再系统配置中进行邮箱配置

(1)配置邮件信息

(2)设置邮件触发器triggers

默认触发器:Failure - Any 无论何时失败触发;加一个success作为测试;

修改收件人为:recipient list

到这里就配置完成了,点击构建从控制台查看输出信息即可

5、构建项目

1、立即构建
2、查看控制台输出

点击#1--->控制台输出;就能看到执行的整个过程

3、验证项目是否构建成功

(1)成功向上蓝色;失败即为红色

(2)在tomcat上查看项目

(3)收到项目构建成功的邮件

相关推荐
blackorbird3 分钟前
AI工作流自动化平台n8n正被大规模网络武器化
运维·网络·人工智能·自动化
Fcy6484 分钟前
Linux下 进程控制(二) —— 进程程序替换
linux·运维·服务器
浮尘笔记4 分钟前
Java Snowy 框架生产环境安全部署全流程(服务器篇)
java·运维·服务器·开发语言·后端
web守墓人5 分钟前
【linux】Mubuntu v1.0.10更新日志
linux·运维·服务器
赵钰老师12 分钟前
最新Hermes Agent 技能封装与科研自动化:以 Meta-Analysis 为例-实现从文献检索到绘图的一站式工作流
运维·chatgpt·自动化·ai编程·ai写作
落羽的落羽15 分钟前
【Linux系统】深入线程:多线程的互斥与同步原理,封装实现两种生产者消费者模型
java·linux·运维·服务器·c++·人工智能·python
博风20 分钟前
nginx:负载均衡
运维·nginx·负载均衡
爱莉希雅&&&1 小时前
Docker 部署 MySQL 双主双从同步架构详细笔记
linux·运维·数据库·mysql·docker·架构·主从同步
Alex艾力的IT数字空间8 小时前
在 Kylin(麒麟)操作系统上搭建 Docker 环境
大数据·运维·缓存·docker·容器·负载均衡·kylin
陳10309 小时前
Linux:进程间切换与调度
linux·运维·服务器