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 pluginMaven集成插件
Git pluginGit插件
Publish Over SSHSSH推送插件
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 periodicallyPoll 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 部署安装

jenkins+maven+git

Jenkins+github+maven+git+linux

Jenkins——Jenkins+harbor+gitlab(git) 部署maven项目

[ jenkins ] git+jenkins+maven + ansible 部署java程序

Jenkins + git + maven 安装