1. 概述
本文主要介绍持续集成的搭建方式,采用Docker的方式去搭建Jenkins环境,另外会涉及到SpringBoot和Git等技术。
2. 什么是持续集成
传统的软件开发流程如下:
- 项目经理分配模块给开发人员
- 每个模块的开发人员并行开发,并进行单元测试
- 开发完毕,将代码集成部署到测试服务器,测试人员进行测试
- 测试人员发现bug,提交bug、开发人员修改bug
- bug修改完毕再次集成、测试
但是这样就出现了如下问题:
- 模块之间依赖关系复杂,在集成时发现大量bug
- 测试人员等待测试时间过长
- 软件交付无法保障
那我们又该如何解决上述问题呢?可以采用持续集成来解决上述问题,那持续集成又是什么呢?大师Martin Fowler对 持续集成 是这样定义的:
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
持续集成的好处:
- 自动化集成部署,提高了集成效率。
- 更快地修复问题。
- 更快地进行交付。
- 提高了产品质量。
本文通过下图的模式进行持续集成的方案:
- 开发人员开发代码,推送到Git服务器中
- 当Git服务器中的代码发生变化时,会触发配置在Git服务器中的钩子地址,通知到Jenkins
- Jenkins把代码下载下来,通过Maven,build成Docker镜像
- 再把Docker镜像推送到Docker仓库中
- 再从Docker仓库中构建出可以运行的Docker容器
接下来,我们来看搭建环境
3. Docker安装
本文中我们使用Centos7.x进行Docker的安装,所以我们需要在VmWare中先安装Centos7,这一步骤由读者自行安装。
3.1. Docker安装步骤
(1)yum 包更新到最新
sudo yum update
(2)安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
(3)设置yum源为阿里云
sudo yum-config-manager --add-repo [url=mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo]mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo[/url]
(4)安装docker
sudo yum install docker-ce
(5)安装后查看docker版本
docker -v
3.2. 设置ustc的镜像
ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
编辑该文件:
vi /etc/docker/daemon.json
在该文件中输入如下内容:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
3.3. Docker的启动与停止
systemctl命令是系统服务管理器指令
启动docker:
systemctl start docker
停止docker:
systemctl stop docker
重启docker:
systemctl restart docker
查看docker状态:
systemctl status docker
开机启动:
systemctl enable docker
好了,到此为止,我们的Docker的基础环境已经装好,接下来我们准备下GitLab环境。
docker start docker-registry
4. GitLab
GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目安装。类似GitHub,能够浏览源代码,管理缺陷和注释,可以管理团队对仓库的访问。
4.1. GitLab安装部署
官方支持的方式:
包含一切的RPM包: Download and install GitLab
手动安装: doc/install/installation.md · master · GitLab.org / GitLab FOSS
第三方docker镜像: 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
curl -L "github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
4.2.2 安装wget
yum install wget