jenkins git maven tomat 项目拉取编译自动部署(操作详细)
Posted 猎人在吃肉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins git maven tomat 项目拉取编译自动部署(操作详细)相关的知识,希望对你有一定的参考价值。
文章目录
1、项目说明
项目是 SpringBoot ,源代码从 git 获取,使用 maven 编译和 打包为War包,Jenkins 自动部署到远程的 tomcat。
2、tomcat 配置
(1)tomcat-users.xml 配置用户
apache-tomcat-8.5.56\\conf\\tomcat-users.xml
<role rolename="manager-gui"/>
<user username="jenkins" password="jenkins123" roles="manager-gui"/>
完整配置如下:
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="jenkins" password="jenkins123"
roles="admin-gui,manager-gui,manager-script,manager-jmx,manager-status"/>
用户名是 jenkins,密码是 jenkins123 ,按需自定义。
检查tomcat 配置情况,登录 http://127.0.0.1:8080
,如下图所示。
输入用户名和密码,
进入应用管理页面,如上所示。
(2)context.xml 去掉访问限制
apache-tomcat-8.5.56\\webapps\\manager\\META-INF\\context.xml 中注释掉配置
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\\.\\d+\\.\\d+\\.\\d+|::1|0:0:0:0:0:0:0:1" />
-->
或者,将 allow的值修改为
allow="127\\.\\d+\\.\\d+\\.\\d+|::1|0:0:0:0:0:0:0:1"
修改为
allow="^.*$"
(3)解决 war包过大无法上传
apache-tomcat-8.5.56/webapps/manager/WEB-INF/web.xml
<multipart-config>
<!-- 500MB max -->
<max-file-size>524288000</max-file-size>
<max-request-size>524288000</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
(4)访问host-manager报403错误
apache-tomcat-8.5.56/webapps/host-manager/META-INF/context.xml
allow="127\\.\\d+\\.\\d+\\.\\d+|::1|0:0:0:0:0:0:0:1"
修改为
allow="^.*$"
3、Jenkins 插件安装
1)主要插件说明
项目是 SpringBoot ,源代码从 git 获取,使用 maven 编译和 打包为War包,自动部署到远程的 tomcat,所涉及到的 Jenkins插件如下。
插件 | 名称 |
---|---|
Maven Integration plugin | Maven集成插件 |
Git plugin | Git插件 |
Publish Over SSH | SSH推送插件 |
Deploy to container | 应用服务器推送插件 |
2)Maven Integration plugin
3)Git plugin
4)Publish Over SSH:
5)Deploy to container:
4、Jenkins 配置
1)Maven 配置
win10 上 Maven 全局配置。
C:\\Users\\admin\\.m2\\settings.xml
将 Maven 的 settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>D:/dev_tools/maven_repo/repository/</localRepository>
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
<id>mvnrepository</id>
<mirrorOf>mvnrepository</mirrorOf>
<url>http://mvnrepository.com/</url>
</mirror>
<mirror>
<id>aliyunMaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyunMaven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
<id>aliyunmaven-spring</id>
<mirrorOf>*</mirrorOf>
<url>https://maven.aliyun.com/repository/spring/</url>
</mirror>
<mirror>
<id>tencentyun</id>
<mirrorOf>*</mirrorOf>
<name>tencentyun</name>
<url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</mirror>
<mirror>
<id>clojars.org</id>
<mirrorOf>*</mirrorOf>
<url>http://clojars.org/repo</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>development</id>
<activation>
<jdk>1.8</jdk>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
</settings>
2)JDK
3)Git
4)Maven
5、Jenkins 创建任务
1)任务名称
2)描述
3)源码管理(Git)
(1)Repository URL(Git的仓库地址)
http://127.0.0.1:8550/devall/lost_customer_repair.git
(2)Credentials(凭证)
首先要凭证,凭证的种类很多,我选择是用户名和密码。
(3)填写完成后存在,源码管理的配置如下图所示。
4)构建触发器(可选)
此项是可选项。
构建触发器是指在满足某些情况下,触发某个条能,能够自动进行项目构建。
Build after other projects are built
(其他工程构建后触发)Build periodically
(定时构建)GitHub hook trigger for GITScm polling
(github 上代码有变动时构建)Poll SCM
(轮询scm)
Jenkins 任务配置完成后,通过两种方式执行,一种是在任务列表中手动执行,另一种就是在此处配置触发器(或定时器),满足条件后自动执行。
(1)Build periodically
(定时构建)
Build periodically
类似于Spring的 cron表达式、 quartz 定时框架 。
Build periodically 配置如下:
* * * * *
(五颗星,中间用空格隔开)
定时字符串从左往右依次是: 分 时 日 月 周 (有点想cron表达式)
第一颗*表示分钟,取值0~59
第二颗*表示小时,取值0~23
第三颗*表示一个月的第几天,取值1~31
第四颗*表示第几月,取值1~12
第五颗*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
1.每30分钟构建一次:
H/30 * * * *
2.每2个小时构建一次
H H/2 * * *
3.每天早上8点构建一次
0 8 * * *
4.每天的8点,12点,22点,一天构建3次
0 8,12,22 * * *
(多个时间点,中间用逗号隔开)
5.问题来了:每个月的1-7号一天构建一次咋写呢?
请在屏幕下方写出你的答案,写对有奖励!
(2)Poll SCM
(轮询scm)
轮询scm,是指定时扫描本地代码仓库的代码是否发生变更,如果代码有变化那么就会触发构建行为
比如,每隔30分钟检查一次源码变化,(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。
注意:这个触发器,Jenkins会定时扫描本地整个项目的代码,增大系统的开销,不建议使用
(3)Build after other projects are built
(其他工程构建后触发)
有时候我们构建需要在其他项目构建完毕之后才能去构建,那么就可以采用这种方式。
举个案例场景,比如我下面Job1是web项目打包并发布的构建任务,我想每次打完包发布后,然后触发自动化测试Job2的构建。
这里可以输入多个依赖的jobs,多个job中间用逗号隔开。启动第一个Job完成后,就能接着启动第二个Job。
注:Build periodically
和 Poll SCM
两者是可以结合起来使用的。
(4)GitHub hook trigger for GITScm polling
(github 上代码有变动时构建)
管理 github 上代码有变动时构建。
最后这2个一般用的也少,了解下就行。
5)构建
本项目采用 Maven进行项目管理,故此处选择 Invoke top-level Maven targets
。
Maven版本:
选择之前已经配置的 maven3.5.4
目标的配置如下:
clean install
Maven完整配置如下图所示:
6)构建后操作
在上一步中,使用:Maven完整的项目的编译和打包,接下来就是将war包部署到tomcat中, 故选择 Deploy war/ear to a container
。
Jenkins 凭据提供者(添加用户名和密码)
在tomcat配置中,创建的管理员用的用户名和密码如下
用户名是 jenkins
密码是 jenkins123
Tomcat URL:
http://localhost:8080/manager/text
构建后操作的完整配置如下:
6、测试
执行任务
点击Build Now
或者 右侧的三角按钮。
查看日志
在 控制台输出 中查看日志,如下图。
以上是关于jenkins git maven tomat 项目拉取编译自动部署(操作详细)的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins+github+maven+git+linux
Jenkins——Jenkins+harbor+gitlab(git) 部署maven项目