Gitlab详解及CI功能的实现

一、 简介

GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目安装。

它拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。

团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

1、整体部署图

1.1、自动更新图

概述:

1、开发分支提交代码到远程master分支

2、审核者通过并合并代码到远程master分支;开发分支构建成功才会合并到master分支,否则,及时是不能合并到主分支master

3、触发master分支的runner进行pipeline构建

4、构建过程:传送脚本到Salt Stack管理机,通过Salt Stack发起指令去触发游戏服更新代码

1.2、回滚流程图

概述:

1、回滚请求是由审核者发起

2、查看commit日志

3、回滚到特定的版本

4、新建一个回滚分支并切到这个分支

5、将本地的回滚分支推送到远程分支

6、设置master分支不受保护和非默认分支(必须条件)

7、删除本地和远程的master分支

8、创建本地的master分支并切到这个master分支

9、推送代码到远程的master分支

10、设置master分支受保护和设置为默认分支

11、开发分支需要重新发起MR请求去触发更新构建到游戏服上面的代码

2、部署

2.1、部署客户端Git服务

安装依赖包

yum -yinstall wget curl-develexpat-develgettext-developenssl-develzlib-develperl-ExtUtils-MakeMakergccasciidocxmltodocbook2X

ln -s/usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi

#下载git安装包

wget -P/tmp https://www.kernel.org/pub/software/scm/git/git-2.5.0.tar.gz

#编译安装

cd /tmp

tar zxfgit-2.5.0.tar.gz

cdgit-2.5.0/

makeconfigure

./configure--prefix=/usr/local/git

make alldoc info

makeinstall install-doc install-html install-info

2.2、部署Gitlab

安装基础环境

添加gitlab包仓库

yum -yinstall curl policycoreutilsopenssh-server openssh-clients cronie postfix

安装10版本

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

安装gitlab

sudoEXTERNAL_URL="http://127.0.0.1" yum -y install gitlab-ee #安装10版本

注:EXTERNAL_URL="这里可修成你需要访问的URL地址"

版本:10.1.1-ee

2.3、配置GitlabCI基础环境

安装Gitlab-Runner

curl-Lhttps://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh| sudo bash

yuminstall gitlab-ci-multi-runner –y

在仓库根路径下编辑.gitlab-ci.yml文件后并提交至远程master分支

详见附件内容:

定义.gitlab-ci.yml文件中的tags标记为项目简写名称,然后再注册runner和启动runner

gitlab-ci-multi-runnerregister #注册runner

runner注册信息

gitlab-ci-multi-runnerstart #启动runner

gitlab-ci-multi-runnerstop #停止runner

注册后可以在控制台上面查看所注册的runner信息

3、权限控制

3.1、分支保护

选择master分支受保护

作用:防止开发用户直接push到master分支代码

3.2、用户权限

额外补充一点,开发分支所提交上来的代码可以在Pipelines构建中查看是那个用户提交上来的,默认在每个分支都会进行编译,所以都能查到是谁提交过来的代码。

4、更新

4.1、提交代码

4.2、审核代码和合并代码

以下操作是在owner权限下所操作的,也就是创建者最大权限者,只能由这一个人审核代码。

4.3、查看构建过程

查看更新代码的jobs,update_code

4.4、验证远程服务器代码是否更新成功

5、回滚

5.1、分支配置

取消master分支受保护

取消master分支为默认分支

5.2、回滚操作

目标服务器上的代码:

回滚到第二次代码的提交

以下操作在审核者账号下操作:

1、查看第二次提交的记录

git log

回滚到这个版本

注意:这里版本回滚后,务必设置master分支受保护和设置为默认分支!!!

删除本地的回滚分支和远程的回滚分支

这样就完成了一个回滚的操作,但是还需要开发人员重新MR一次才会触发Runner去回滚代码。

以下操作在开发人员账号下操作:

这里删除,是防止分支代码冲突问题,如果发生冲突,需要人为的手工去处理

注意:这里如果push失败时,就添加-f选项强制推送到远程分支。

以下操作在审核者账号下操作:

查看构建的jobs任务

验证服务器上有无回滚成功:

回滚成功

6、分支管理和代码提交

6.1、开发分支提交代码

6.2、审核者合并代码和提交日志查看

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180327G0KIUR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券