Jenkins自动构建部署——热部署

Jenkins是一款开源 CI/CD 软件,用于自动化各种任务,包括构建、测试和部署软件。其中CI/CD是指一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法,其核心概念是持续集成、持续交付和持续部署。
Jenkins自动构建部署——热部署_第1张图片


Jenkins有两种版本,一种安装版,一种war包,都可从其官网 https://jenkins.io/zh 中获取,其中LTS 长期支持的版本,一般3个月发布一次版本。


这里我们采用了war包部署的方式,所以我们首先需要安装一台Tomcat服务器(这里我们将其端口改为了8000端口),然后我们直接将其 jenkins.war 部署在Tomcat上即可,可参考Tomcat的三种部署方式


然后我们直接启动Tomcat服务器,访问Jenkins服务,不过当我们第一次访问新的Jenkins实例时,系统会要求您使用自动生成的密码对其进行解锁,如下:
Jenkins自动构建部署——热部署_第2张图片
在这里插入图片描述


将上述密码输入解锁,完成后会让我们选择安装推荐插件还是自定义插件,这里我们就直接选择推荐插件安装,然后进行等待插件安装,如下:
Jenkins自动构建部署——热部署_第3张图片


等待安装完成后(可能有部分插件安装失败,可进行重试),然后就会需要创建第一个管理用户及密码,设置完成后就可以进行Jenkins的管理界面了
Jenkins自动构建部署——热部署_第4张图片




Jenkins基本配置

然后我们进行一些Jenkins的基本配置,主要在其系统管理——全局工具管理,主要配置如下:

  • JDK配置
  • GIT配置
  • Maven配置
JDK配置

配置JDK之前,我们肯定需要在服务器上事先安装好JDK,这里可见——JDK及Tomcat的安装,安装完并配置好环境变量后,Jenkins配置如下:
Jenkins自动构建部署——热部署_第5张图片

GIT配置

同样这里我们也是需要安装git的,这里我们直接采用yum的方式安装,执行 yum -y install git 即可
Jenkins自动构建部署——热部署_第6张图片

Maven配置

这里可以去Maven官网 http://maven.apache.org/download.cgi 下载,然后将其解压,放置相应的位置,最后还需配置下Maven的环境变量,如下:
Jenkins自动构建部署——热部署_第7张图片
Jenkins自动构建部署——热部署_第8张图片



Maven插件安装

然后我们进入系统管理——插件管理中,再来安装需要用到的插件,如下:

  • Maven插件:Maven Integration
  • 动态部署插件:Deploy to container

在其中的可选插件中直接搜索安装即可,如下:
Jenkins自动构建部署——热部署_第9张图片




自动化构建部署

完成上述的准备工作后,我们就来新建一个任务了,上述安装了Maven Integration插件即可构建Maven项目,如下:
Jenkins自动构建部署——热部署_第10张图片


然后我们在其源码管理中,就需要添加相应的git地址及账户信息(若项目设置了相关的权限则需要),如下:
Jenkins自动构建部署——热部署_第11张图片
Jenkins自动构建部署——热部署_第12张图片
在这里插入图片描述


然后我们还可以看到其Build模块,通过Maven打包进行构建的,如下:
Jenkins自动构建部署——热部署_第13张图片



完成上述配置,我们其实已经可以进行构建了,然后我们可以查看其构建的控制台输出,在其输出日志中我们可以找到相关的路径,该路径就是Jenkins的工作空间(即一开始我们介绍Jenkins的图中所示),我们从Git服务器上pull下来的代码就会进行其路径下,有兴趣的话可以查看下
Jenkins自动构建部署——热部署_第14张图片
Jenkins自动构建部署——热部署_第15张图片




上述是我们手动进行构建的,在介绍Jenkins示意图中,我们还看到有定时和轮询另外两种方式,首先我们来看看定时构建,还是在我们之前的配置之中,我们可以选中定时构建,然后右侧的问号会提示我们如何进行配置,如下:
Jenkins自动构建部署——热部署_第16张图片

常见定时构建语法如下:

  • 每隔5分钟构建一次     H/5 * * * *
    *每两小时构建一次     H H/2 * * *
  • 每天中午12点定时构建一次     0 12 * * *
  • 每天下午6点定时构建一次     0 18 * * *



然后下面还有一个轮询的选项,也是需要配置上述的构建语法,其区别是定时构建只要配置的时间满足就进行构建。但是轮询的话不仅仅要求时间满足,还回去检查Git是否存在代码更新,两者都满足后才会进行构建
Jenkins自动构建部署——热部署_第17张图片




上述我们主要安装了Jenkins的构建项目,其帮助我们将项目从Git服务器上拉取下来,并且达成了jar包,然后我们还有最后一个步骤,就是将该项目部署到Tomcat中,根据其示意图我们现在会在安装一台Tomcat(端口号为8080,至于该演示项目结构及内容会在文末介绍)。


这里我们先不使用shell脚本,我们先来玩一玩热部署的方式,上述我们已经安装好了动态部署的插件Deploy to container,该插件安装完成后其实在上述配置的最下面我们会发现一个构建后的配置,如下:
Jenkins自动构建部署——热部署_第18张图片


这里再配置之前,热部署还需要对Tomcat进行相关的配置,首先我们需要在Tomat的 webapps/manager/META-INF 路径下的 context.xml 文件
Jenkins自动构建部署——热部署_第19张图片

然后我们需要注释到下列内容,如下:
Jenkins自动构建部署——热部署_第20张图片


然后我们还需要在Tomcat的 conf 目录下的 tomcat-users.xml 文件中添加一个用户信息,如下:
Jenkins自动构建部署——热部署_第21张图片

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user rolename="admin-gui"/>
<user rolename="admin-script"/>
<user rolename="tomcat-gui"/>
<user username="tomcat" password="123456" roles="manager-script,admin-script,manager-gui,admin-gui,tomcat-gui"/>

上述Tomcat的配置完成后,我们就可以来启动该Tomcat了,启动后访问 /manager,然后就会要求我们输入登录账号密码,及上述在tomcat-users.xml中配置的
Jenkins自动构建部署——热部署_第22张图片



然后Tomcat的完全OK了,这里我们就需要来配置上述提到了安装了动态部署的插件Deploy to container,出现的构建后操作的配置,如下:
Jenkins自动构建部署——热部署_第23张图片


其中首先我们需要配置下 .war 包的路径,就是上述我们提到的Jenkins的工作空间路径(我们在界面上找到该配置,其中也有工作空间的选项可以查看其路径及其下面的文件),然后还可以配置下其访问路径


然后我们选择添加容器——Add Container,选中一个版本和我们对应的配置,其中需要添加一个账号,和上述一致,就是tomcat-users.xml中添加的,然后配置下路径即可(也可以配置成127.0.0.1:port)
Jenkins自动构建部署——热部署_第24张图片


上述我们的Jenkins自动构建部署——热部署的方式就全部完成了,接下来就可以直接点击构建即可,构建完成后直接访问项目接口,如下:
在这里插入图片描述




最后我们来介绍下我们上述所使用到的项目,该测试的demo项目比较的简单,就是新建了一个SpringBoot的项目,其目录结构如下:
Jenkins自动构建部署——热部署_第25张图片

然后引入了相关的依赖,并在pom.xml进行相关的设置,比如打成war、支持热部署之类的,可参考SpringBoot(七)—— 热加载及打包部署

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-webartifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-tomcatartifactId>
        exclusion>
    exclusions>
dependency>

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-tomcatartifactId>
    <scope>providedscope>
dependency>

Jenkins自动构建部署——热部署_第26张图片

Jenkins自动构建部署——热部署_第27张图片


之前上述提到的博客中也提到过,达成war包,项目启动时还需要进行相关设置,另外我们在其中添加了一个 /hello 的请求路径,用于测试,如下:

@SpringBootApplication
@RestController
public class DemoApplication extends SpringBootServletInitializer{
     

    public static void main(String[] args) throws IOException {
     
        SpringApplication.run(DemoApplication.class, args);
        //System.in.read();     本地测试使用
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
     
        return builder.sources(DemoApplication.class);
    }

    @GetMapping("/hello")
    public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
     
        return String.format("Hello %s", name);
    }
}

你可能感兴趣的:(Jenkins)