Gitlab
由于公司现在 Git 私有服务使用的是 Gitblit ,虽然只有我们一个项目组在用 Git ,但使用下来问题不断,基本有以下几点:
- 团队成员对 Git 的使用不熟悉,目前只有我一个人长期使用 GitHub 、 Coding 等服务。
- 缺少 Git 工作流程的规范化。
- 由第二点引起的缺少代码评审机制
对于第一点,引入 SourceTree 可以解决大部分问题,在操作上使用图形界面相对于 Bash 上敲命令容易的多。
对于第二点,起先打算引入 Git Flow 工作流,然而相对来说还是较为复杂,成员不一定能够理解其中奥妙。
对于第三点,如果使用 Git Flow 工作流的话实现不了强制性代码评审,直到后来看到了 Gitlab 。
基于以上几点,我在 Ubuntu 16.04 安装了 Gitlab ,具体安装过程我就不详述了,有兴趣的请点以下链接前往官网: 点我去官网 使用过程中遇到了一个问题,在进入管理员页面时经常会出现 502 错误。详细排查之后才发现是内存不足的原因。
试用过后认为有些优点是比较值得说的:
- 界面美观
- Gitlab Flow
类似于 Github Flow 的工作流,就问你怕没?
master 分支作为保护分支,只有项目拥有者可以直接操作,成员只能在 master 基础上创建功能分支,开发完成后,提交 Merge Request ,项目拥有者同意后才能合并代码。 - 强制性代码评审
由上一条带来的好处就是, Mereg Request 时,项目拥有者可以和其他成员一起评审代码,对代码进行评论,在此期间,成员可以继续提交代码, Merge Request 会自动跟踪最新代码的情况。 - Gitlab CI 集成
暂时没用到,就不深入讨论了
具体而言, Gitlab 足够强大,然而问题来了,公司现在代码服务器在内网,系统为 Windows Server 2008 ,而 Gitlab 只支持 Linux ,无奈只能等新服务器再使用 Gitlab 。
你以为这样就结束了?
Docker
并没有,我在 Ubuntu 16.04 上安装了 Gitlab 后,想起对服务器来说,系统上装了很多服务,维护时总是在解决各种服务的冲突,另外服务不支持快速部署,对移植不友好等等。
由此我想到了 Docker ,在恶补了一两天,熟悉 Docker 基本使用后,便着手在 Docker 上部署 Gitlab ,由于在 Docker 上已经有成熟的 Gitlab 镜像,我们直接拿来用就可以了。Docker-Gitlab 在官网可以看到,部署方式特别简单,以下指出几点关键的地方:
docker-compose
作为一个将容器部署从复杂变为简单的工具,我一开始是不知道的,从 Docker 官网我们可以看到以下这两条安装命令:
|
|
比较坑的是,国内运行这条命令来安装的速度,慢如乌龟。我一天都没下好,所以建议大家使用 python pip 来安装,运行如下命令:
|
|
安装了 docker-compose 后,就需要部署 Docker-Gitlab 了:
|
|
最后,说一下如何备份 Docker-Gitlab 的数据,运行以下命令:
|
|
备份文件放在 /srv/docker/gitlab/gitlab/backups 目录下,更换服务器时,只需要将备份文件放到新服务器恢复,一切就完成啦