虽然GitLab是一个从头到位模仿Github的家伙,但是我们确实有这样的需求,并且他还是开源的。相比Gtihub来说可以减少很多成本。Github本身是有企业版可以在公司环境搭建的,但是价钱不菲,看看Github Enterprise定价就知道了,最小的也要一年5000美金,对于小团队小公司是一笔不小的投入。有了Gitlab可以几乎不需投入就能轻松有一套内部的Git管理平台。
Gitlab主要功能:
- 仓库管理
在创建仓库的时候可以选择创建到群组空间下(类似于Github的Orgnization);也可以到全局空间下,没有前缀;或者个人空间下,默认是私仓,可以选择公开。
- 公仓和私仓 (权限分配)
每个仓库的权限可以单独分配,只需要设置为Master就可以对仓库有完全的操控权,如果需要过库到别人名下也是支持的。配置允许默认创建公仓还是私仓,自己创建的私仓只能自己和管理员看见。
- Github工作流 (不清楚Github Flow的可以点此了解)
Github工作流主要是使用Pull Requets的功能完成,没个人去提交自己的仓库,然后再去pull request来完成协作,gitlab也支持pull request。
- 团队和群组管理
可以建立一个团队(比如公司的某个部门),把用户加进来,这些用户默认就有了访问团队下仓库的给定权限。群组和Github的Orgnizition类似,但又不完全一样。我一把把群组当作项目来用。注意:团队是没有仓库空间的,群组是有的。
一些问题
-
权限管理过于复杂
如果建立了团队,建立了群组再去分配权限会异常的麻烦
-
页面性能不行
长时间的停留在页面上,去操作会出现明显的卡顿,可能存在JS内存泄漏
-
部署麻烦
5.0以前的版本都需要依赖个gitolite这么个玩意儿,再加上其他的各种库依赖部署起来很麻烦,据说下一版本会做一些优化。
-
公钥管理缺陷
如果一个人把某个机器的公钥加到他自己名下,那么我就没法为一个仓库添加发布公钥
结合LDAP使用
很多公司都有自己的用户账户管理体系,大部分是基于LDAP来做的,我们公司是用的一套微软的ActiveDirectory来做的,在配置的时候发现一些问题,大家可以参考避免一下。
- Gitlab不支持匿名Ldap认证,所以必须要绑定一个用户和密码
- 建议配置前先使用ldap-search命令来调试通过把参数填写进去,注意bind_dn必须要带上域名
下面是我的配置示例:
1 2 3 4 5 6 7 8 9 |
ldap: enabled: true host: '172.22.8.8' base: 'dc=example,dc=com' port: 389 uid: 'sAMAccountName' method: 'plain' # "ssl" or "plain" bind_dn: 'guest@example.com' password: 'guest' |
配置好后重启就会出现如下的界面:
写在后面
Gitlab大大的方便了Git的权限管理,让我们团队完全从以前的原始部落(手工添加密钥,配置权限等)解放出来。而且支持Github Flow,对于流程上的帮助很大。而且有这么一个开放的平台更适合内部的编码共享和提高成员的积极性。
链接
官网: http://gitlabhq.com/
代码:https://github.com/gitlabhq/gitlabhq
安装:https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md