SpringBoot+GitLab+Docker+Jenkins实现持续集成
黑马专升本郑州中心
2020年04月24日 13:41
收录于文集
共7篇

1. 概述

本文主要介绍持续集成的搭建方式,采用Docker的方式去搭建Jenkins环境,另外会涉及到SpringBoot和Git等技术。

2. 什么是持续集成

传统的软件开发流程如下:

1、项目经理分配模块给开发人员

2、每个模块的开发人员并行开发,并进行单元测试

3、开发完毕,将代码集成部署到测试服务器,测试人员进行测试

4、测试人员发现bug,提交bug、开发人员修改bug

5、bug修改完毕再次集成、测试

但是这样就出现了如下问题:

1、模块之间依赖关系复杂,在集成时发现大量bug

2、测试人员等待测试时间过长

3、软件交付无法保障

那我们又该如何解决上述问题呢?可以采用持续集成来解决上述问题,那持续集成又是什么呢?大师Martin Fowler对 持续集成 是这样定义的:

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

持续集成的好处:

1、自动化集成部署,提高了集成效率。

2、更快的修复问题。

3、更快的进行交付。

4、提高了产品质量。

本文通过下图的模式进行持续集成的方案:

  1. 开发人员开发代码,推送到Git服务器中

  2. 当Git服务器中的代码发生变化时,会触发配置在Git服务器中的钩子地址,通知到Jenkins

  3. Jenkins把代码下载下来,通过Maven,build成Docker镜像

  4. 再把Docker镜像推送到Docker仓库中

  5. 再从Docker仓库中构建出可以运行的Docker容器     

         

接下来,我们介绍下如何构建上述环境。

3. Docker安装

本文中我们使用Centos7.x进行Docker的安装,所以我们需要在VmWare中先安装Centos7,这一步骤由读者自行安装。

3.1. Docker安装步骤

(1)yum 包更新到最新

3.2. 设置ustc的镜像

ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。

https://lug.ustc.edu.cn/wiki/mirrors/help/docker

3.3. Docker的启动与停止

systemctl命令是系统服务管理器指令

启动docker:

4. GitLab

GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目安装。类似GitHub,能够浏览源代码,管理缺陷和注释,可以管理团队对仓库的访问。

4.1. GitLab安装部署

官方支持的方式:

  1. 包含一切的RPM包: https://about.gitlab.com/downloads/

  2. 手动安装: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md

  3. 第三方docker镜像: https://github.com/sameersbn/docker-gitlab 镜像可以快速实现部署并使用,适合于熟悉Docker的人使用,入门很快。

4.2. 下载GitLab镜像

如果我们直接使用Docker的镜像方式去安装GitLab,我们还必须手动安装一些相关软件,例如:Redis,PostgreSql。我们这次选用docker-compose的方式去安装gitlab。

4.2.1 安装docker的docker-compose

docker-compose 是一个用来把 docker 自动化的东西。有了 docker-compose 你可以把所有繁复的 docker 操作全都一条命令,自动化的完成。

运行下边两条命令,即可安装docker-compose

4.3. 运行docker-compose.yml文件

Compose 是一个用户定义和运行多个容器的 Docker 应用程序。在 Compose 中你可以使用 YAML 文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。

使用 Compose 基本会有如下三步流程:

  1. 在 Dockfile 中定义你的应用环境,使其可以在任何地方复制。

  2. 在 docker-compose.yml 中定义组成应用程序的服务,以便它们可以在隔离的环境中一起运行。

  3. 最后运行docker-compose up,Compose 将启动并运行整个应用程序。

4.4. 初始化密码

初次访问,会弹出下列页面,我们需要为管理员root设置密码,例如12345678。

4.5. 新建普通用户

我们可以为gitlab添加普通用户,切换到register选项卡中,注册新用户。

4.6. 新建项目

登陆之后,我们就可以新建项目了,我们输入项目名,新建即可。

5. 编写SpringBoot项目

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

接下来我们来编写一个最简单的SpringBoot入门项目。

5.1. POM文件

5.2. 核心配置文件application.properties

由于我们是基础入门项目,所以我们只需要新建一个application.properties文件放在resources目录下(当然不放置也是可以的),内容为空即可。

5.3. Controller类

5.4. 引导类

5.5. 运行项目

我们运行引导类的main方法即可运行项目,此时控制台会输出如下日志,注意观察标红的部分,由于我们并没有进行任何的配置,项目自动运行在了端口号为8080的tomcat中,项目名也默认为“”。

我们在浏览器中输入"http://localhost:8080/quick",可以观察到下图的输出,这说明我们的项目已正常运行。

5.6. pom_docker_registry.xml

由于我们接下来会使用Jenkins把项目打包成Docker镜像,我们需要添加一个专门用于Docker的pom文件。内容为如下代码块:

                                

5.7. 配置Dockerfile

在resources目录下创建Dockerfile文件,该文件用于构建docker镜像,文件名称必须是Dockerfile。

这一切都准备完毕之后,我们把项目push到上一节搭建好的GitLab中。

6. Jenkins

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

6.1. 安装Jenkins

6.1.1. 下载Docker镜像

6.1.4. 访问Jenkins

在浏览器中输入http://192.168.25.130:8889,可以观察到下面的页面,第一次启动需要耐心的等待,时间比较久,另外还需要解锁密码,密码在下图标红的位置。

6.2. 配置Jenkins

6.2.1. 插件安装

进入Jenkins中,我们可以进行插件的安装,先选择下图第一个选项即可。

6.2.2. 创建用户

6.2.3. 保存进入

6.2.4. 设置JDK、Maven、Git

进入【系统管理】,点击【全局工具配置】,设置JDK、Git和Maven,我们可以选择自动安装。

6.2.5. 设置全局凭据

根据下图我们设置下全局的凭据,注意此处要设置的是当前CentOS7的用户名和密码

6.3. 创建Jenkins任务

6.3.1. 输入任务名称,选择【构建一个自由风格的软件项目】

6.3.2. 设置GitLab中项目的地址

6.3.3. 添加构建脚本

脚本内容:

6.3.4. 添加顶层Maven目标

6.3.5. 添加Shell执行脚本

6.4. 执行任务

点击项目的左侧菜单中的【立即构建】,可以观察到下面的日志内容,日志太长,我分段给大家截取:

  1. 从gitlab中拉取源码

停止并删除之前运行的容器

通过Maven构建Docker镜像

创建并运行Docker容器

此时在浏览器中访问http://192.168.25.130:28080/quick,可以看到以下页面,这也正是我们最初在本机运行时看到的内容

6.5. 配置钩子

到此为止,我们已经实现了运行Jenkins任务,自动执行GitLab的代码,但是我们还无法实现当GitLab中的代码发生变化时,Jenkins自动构建任务的功能。接下来,我们配置下WebHook,来实现该功能。

6.5.1. 安装GitLab插件

6.5.2. 安装GitLab WebHook插件

6.5.3. Jenkins中配置Build Triggers

打开我们在Jenkins的任务进行设置,勾选Build Triggers,选择下面标红的复选框,并且复制其中的超链接。

6.5.4. GitLab配置webhook

打开GitLab中我们的项目,点击设置中的Integrations,在URL中填入我们刚刚在Jenkins中粘贴的超链接。

6.5.5. 测试webhook

添加完webHook之后,我们点击test按钮,进行推送测试。

观察Jenkins中,会发现Jenkins已经自动执行了该任务。这说明我们的webhook也已经正确配置了。

7. 总结

经过我们多款软件的安装配置,我们逐步掌握了如何上传SpringBoot项目到GitLab中,并使用Jenkins自动构建任务,另外依托于Docker,让这一切变得更加方便,希望大家都多多思考,让机器自动干活,减少我们IT从业人员的重复、繁琐的工作量。