Git和Gitlab部署

说明

(背景:加入新公司后,发现新公司仍然在使用svn进行代码管理,因此整理输出该文档用于指导部署gitlab)。

本文档描述git/gitlab的安装部署及使用。

以下内容大部分来源于互联网。

基本概念

Git/gitlab/github是什么

Git是一款分布式的代码管理工具,具有精巧,快速,分布式的特点,不仅可以用于团队协作开发,也可以用于个人不同分支(版本)管理上。最初由linux内核开发者Linus Torvalds开发用于linux内核代码的管理。当前很多著名公司的开发协作都通过git进行管理。

Github是基于git发展起来的一个公共的代码托管网站,当前已经有超过5000万的用户通过github托管自己的代码(国内有类似的托管网站https://gitee.com/,由于受美国对中国的打压,2020年gitee用户数量有很大发展,超过600万,有不少小型开发团队将代码从github迁移回gitee)。

Github和gitee都属于第三方代码托管,对于托管在上面的代码,github和gitee有完全的查看权限,具有代码泄露的风险。

Gitlab是基于git发展的一款本地软件,可以部署在企业内部提供类似于github和gitee的功能,可以支持代码存储,访问,review,bug跟踪等。

Gitlab部署

Ubuntu下安装过程如下

1:执行如下命令信任GPG密钥

curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null

2:编辑/etc/apt/sources.list文件,添加国内gitlab镜像源地址(ubuntu 18.04)

deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu bionic main

3:执行apt-get update更新软件源

4:apt-get install gitlab-ce安装gitlab

5:安装完成后,修改/etc/gitlab/gitlab.rb配置文件中的external_url为本地提供的访问url地址

6:执行gitlab-ctl reconfigure重新进行配置。

7:执行gitlab-ctl start启动gitlab服务。

8:通过external_url访问gitlab服务,第一次访问需要为root用户设置密码。

Gitlab其他配置

管理员邮箱设置

管理员邮箱设置,可以用于邮件发送

修改/etc/gitlab/gitlab.rb配置文件中如下内容

执行gitlab-rails console以及Notify.test_email('[email protected]',

'test_subject', 'This is a first test email').deliver_now验证配置是否成功。

常用操作

查看当前运行状态

gitlab-ctl status

查看运行版本

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

gitlab-runner  --version

管理员添加其他用户

管理员登陆后,参考以下步骤添加其他用户,添加完成后系统会自动发送邮件给新添加用户进行密码修改。

Gitlab备份和恢复

通过如下方式进行gitlab运行文件的备份和恢复

1:执行gitlab-backup create命令进行备份,备份后结果保存在/var/opt/gitlab/backups目录下,该备份文件并不包括gitlab.rb和gitlab-secrets.json两个配置文件,如果要完整恢复到之前的运行状态,需要手工备份这两个单独的文件。

2:执行gitlab-backup restore force=yesBACKUP=1597812374_2020_08_19_12.10.5用于备份内容的恢复。

3:执行gitlab-ctl

reconfigure进行重配置以便所有内容都可以完整恢复

Gitlab工作原理

Gitlab权限管理

Gitlab中的人员角色有以下几种角色

Guest:可以创建issue, 发表评论,但不能读写版本库。

Reporter:Git项目测试人员,可以克隆代码,但不能提交代码。

Developer:Git项目开发人员,可以clone,提交,push代码。

Maintainer:Git项目管理员,可以创建项目,添加tag, 保护分支,添加项目成员,编辑项目(核心开发人员可以赋予该权限)。

Owner:Git系统管理员,拥有至高无上的权限。开发组leader可以赋予该权限。

项目权限

      项目权限分为以下三类

      Private:只有组员可以看到。

      Internal:登陆后的用户才能开到。

                Public:所有人都可以看到。

Gitlab分支管理策略

使用Gitlab管理代码,在多人协作时的开发策略一般如下

1:首先创建一个master分支,整个项目不会在master分支上进行开发,但是项目一定是以master分支为主线进行开发。在项目需要release时,基于master分支打tag进行标记。

2:基于master创建一个develop分支。首次创建时,需要从master分支拉取代码,保持开发时代码和最新上线代码相同。

3:在进行某个特性开发时,基于develop分支创建feature分支,实际的代码开发将基于该feature分支进行,不强制提交到远程仓库,在开发完成后,代码同步到develop分支后可以删除。

4:release分支,当所有特性代码都提交到develop分支并且测试通过后,可以从的develop分支创建release分支,release分支为版本的发布而创建,此时可以在release分支上进行一些配置文件版本等小的修改,从而把develop分支空闲出来进行下一轮开发。

Gitlab目录结构

Gitlab在部署完成后,有如下的目录结构

/opt/gitlab主目录

/etc/gitlab  配置目录,保存在运行时配置文件

/var/opt/gitlab  各个执行组件所在位置

/var/log/gitlab  运行日志所在目录

Gitlab的核心组件

Gitlab包括以下核心组件

                Nginx:反向代理服务器

                Postgresql:文件数据库

                Redis:缓存

                Unicorn:Ruby开发的web服务器。

                Sidekiq:Ruby开发的轻量级异步任务组件。

                Logrotate:日志组件

你可能感兴趣的:(Git和Gitlab部署)