原创

GitLab入门级CI/CD环境搭建方案(适用于小微企业或分)

相关

什么是CI/CD

CI - Continuous Integrarion - 持续集成

现代应用开发的目的是能够让多个开发人员在同时进行同一应用的不同功能。但是这样需要企业在某一天将不同开发人员的代码合入到主分支上去,我们称这一天为“合并日”,可以想象到的是在合并日当天的工作将非常的繁琐、耗时,而且会出现大量的冲突代码,这对开发人员、管理人员来说都是灾难性的,这时候我们就需要一个基于云的IDE来使各位开发人员在代码进度上达成一致。

持续集成(CI)可以帮助代码管理员更好地管理代码分支,并且管理员review代码并决定合入主分支后,系统就会自动构建应用(附加不同等级的自动化测试,通常是单元测试和集成测试,当然也可以加上CheckStyle,以确保新合入的代码不会对应用造成破坏)。

CD - Continuous Ddelivery - 持续交付

通过CI中的构建及自动化测试之后的代码,已经达到了应用部署的标准,持续交付可以将已验证的代码自动发布到代码仓库,其他开发人员只需更新代码即可获取当前最新代码,然后处理本地的冲突代码。运维人员也可以快速、轻松地将应用部署到生茶环境。

CD - Continuous Deployment - 持续部署

对于一个成熟的CI/CD管道来说,做到持续交付当然是不够的。持续部署作为持续交付的延伸,可以自动将应用发布到测试/生产环境,当然为了保证部署应用的可靠性,持续集成阶段所涉及的测试一定要是经过精心设计才行。实际上,持续部署意味着,合入代码将会在几分钟内生效,能够快速接入测试部门的工作。

热门工具

当前热门的CI/CD工具还是很多的,他们都有很多很酷的特性,而且大多是开源的(我司自动化中心CI/CD模块既是在某开源组件的基础上进行二次开发)。当前较为热门的CI/CD工具有:

  • GitLab CI
  • Go CD
  • Travis CI
  • Jenkins
  • Concourse CI
  • Spinnaker
  • Screwdriver
    本来打算在Jenkins的基础上来写本篇文章的,但是Jenkins作为老牌CI/CD工具,已经玩了太多次了,所以最后决定使用GitLab CI来进行构建。

    GitLab CI

    项目主页

    GitLab CI

    源码地址

    GitLab源码地址

    特性

  • 使用YAML文件进行管道配置
  • Auto DevOps, 自动为简单项目配置内置的测试通道
  • 原生集成Kubernetes集群

    其他

    除了基本的CI外,GItLab CI还提供了许多额外功能,比如运行监控、项目管理、安全检查等。

    虚拟机安装

    本来想说部署在我得服务器上,但是看了文档发现我的个人服务器实在是太水了,只好安装一个VM来在我本地跑了。官方的推荐配置时4核8G,最低配置时4核4G,我采用的是最低配置,安装过程中会占满内存,安装完成之后内存的占用率在80%左右,所大家在安装的时候,可以考虑稍微加大一点内存。
  • VMWare 15pro
  • CentOS 7

需要VMWare软件和虚拟机镜像的同学可以扫码关注我的微信公众号,回复VMWare和CentOS获取下载链接。

安装完成之后就是这个样子

服务器安装GitLab CI

依赖安装

在防火墙中先开启HTTP、HTTPS和SSH连接

sudo yum install -y curl policycoreutils openssh-server perl
sudo systemctl enable sshd
sudo systemctl start sshd
# Check if opening the firewall is needed with: sudo systemctl status firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

假如你是CentOS8或以上,需要将yum替换为dnf

接下来,安装Postfix,用来发送通知信息。假如你想使用其他方法来发送邮件信息,可以先跳过这一步,在安装完成之后再配置STMP。

sudo dnf install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

下载安装GitLab

首先先下载GitLab安装包

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

下一步就是安装GitLab了,首先确认你已经配置好了你的DNS,将下面命令中的node_1改成你的GitLab实例的地址,然后就会自动安装。
对于https连接,安装过程中会自动申请一个证书,你也可以使用http连接,后续再配置自己的证书。

sudo EXTERNAL_URL="https://node_1" yum install -y gitlab-ee

访问GitLab

刚才我们在虚拟机中配置的hostname为node_1,并且我们刚才设置的是https连接,我们现在想要在物理机中访问虚拟机中的GitLab面板,需要先在host文件中配置这个IP的映射,在host文件中添加以下配置

192.168.48.3   node_1

你在操作的时候前面的IP可能与我的不一样,设置成你自己的,否则访问不到。

当我们第一次访问GitLab面板时,系统会引导我们初始化密码,你设置一个密码并记住它。

密码设置完成之后,进入登录界面,使用用户名root和你刚才设置的密码进行登录。

登录之后就可以参考官方文档进行配置了。

设置邮件服务器

邮箱服务器已经自动设置,可能是由于我的域名不合规,邮件发送得非常慢,这里假如你们是需要投入生环境中使用,建议使用第三方邮件服务器,或者公司的邮箱服务器。

总结

相比于Jenkins的安装,GitLab的安装实在是太友好了,而且GitLab的面板看起来更加的清爽,唯一的缺点是对服务器的配置要求稍高一些,假如您是在生产环境中使用GitLab,那最低的配置建议是4核8G。

正文到此结束