一、 简介
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、审核者合并代码和提交日志查看
领取专属 10元无门槛券
私享最新 技术干货