本文提供一种基于gitlab进行团队项目开发发的解决方案。
目前有两个途径可以使用gitlab:
- 直接使用gitlab.com官方提供的服务,个人项目免费,创建团队收费。
- 基于开源协议,自行搭建gitlab服务。方法请参考官方教程
用户和权限管理
通常,对于一个项目团队,成员应该有如下角色,(括号中是对应的gitalb角色):
- 项目负责人(master):负责项目部署发布和持续集成----通常是开发组长
- 项目开发者(developer):负责项目开发维护----通常是做这个项目的开发人员
- 其他相关开发者(reporter):浏览项目代码----通常是不做这个项目的开发人员,例如后端项目对应的前端开发
- 其他相关人员(guest):浏览编辑issue,浏览wiki,获取artifacts等----包括产品、测试等
对于用户管理,通常需要面对下面问题:
- 如何创建删除用户?
建议使用gitlab自身账户系统管理账户数据。可通过使用gitlab-api同步企业oa数据。
gitlab账户存在与否,应该完全由管理员负责,该管理员通常身份是运维负责人。 - 如何管理账户权限?
建议通过项目和组来管理用户权限。
对于一个新账户,默认不属于任何项目和组。
项目负责人和组负责人在需要时,将目标用户添加删除到所负责的项目或组中。
项目管理
所有项目都应该属于一个项目组,并且只能由项目组负责人创建项目。
这里不建议在公司git上创建个人项目,一方面会增加代码管理复杂度,另一方面团队项目的个人分支完全可以做到想做的事情。
repository
创建项目时,应遵循以下原则:
- 项目由项目负责人创建
- 项目命名空间应该是组而非个人
- 项目可见级别选择Internal
- 项目描述不要留空,尽量做到简明扼要
- 项目应当有描述文件README.md
README.md格式建议
1 | <项目名称> |
branch
对于规模较小的团队项目,建议使用简化模式进行分支管理。
1 | 1.0.1 1.0.2 |
首先,对于任意项目,都创建两个保护分支:
- master: 只有发布才合并到该分支
- develop: 有新的变化并测试通过后合并到该分支
开发者通过提交MR将dev/xxx
合并到develop分支上,项目负责人根据需要对develop分支进行发布。
当团队规模到达一定程度时,使用git flow模式进行分支管理会带来很大的方便。
1 | 1.0.0 1.0.1 1.1.0 1.1.1 1.2.0 |
commit
建议使用message格式:
1 | <本次提交的标题> |
ci
为了保证项目的敏捷开发和持续集成,建议使用gitlab-ci功能。
- ci配置中应设置合并到任何分支都触发unittest
- 合并到develop和master时触发release(可配合ci产生atrifacts用于部署发布)
issue
建议使用gitlab的issue推动项目开发。
开发者要解决对应的issue可以通过create merge request按钮(新版本gitlab支持)创建branch和merge request,这样方便项目负责人跟踪项目进度。
wiki
建议写项目开发相关内容。