Skip to the content.

Gitlab的项目管理

开发、测试和运维三个部门的关系

项目计划 RoadMap ——– | Timeline——-O———O———-O——-O——-> | —————–

项目里程碑 项目开发计划如同列车时刻表,每个站点对应一个项目节点即里程碑。 火车偶尔也会出现晚点、取消班次、临时停车或不停靠直接开往下一站的情况,项目也是如此: 晚点就是项目延期,取消班次就是停止本次里程碑的上线计划,临时停靠即热修复和紧急上线,不停靠就是跳过本次里程碑,下一个里程碑一次性解决。 项目计划应该是像列车时刻表一样,一旦你定好,就不能随意修改,必须按照设定的里程碑有条不紊的推进。

定义工作流 Gitlab中没有工作流,我们通过标记可以定义工作流。如定义标签:

工作流设计原则

  1. 遵循减法原则而不是加法原则,参与人越少越好,节点越少越好
  2. 尽量线性,从一端流向另一端,中间尽量不要出现分叉
  3. 尽可能不出现逻辑判断分叉,如A审批决定下一步是流向B还是C
  4. 避免循环,依赖关系避免循环,即流程后退 目的是让工作流可操作、易操作、能冗余。

用好标记:

如何写议题

  1. 精确描述任务
  2. 不使用模糊词汇,避免造成误解
  3. 5W2H任务分配法则

5W2H任务分配法则

举例:开发任务

Release Notes:

项目升级时,需要写一个文档记录本次变动,内容包括:

changelog是更详细的内容说明。


Gitlab多任务并行开发

  1. 任务分解
  2. 配套环境 3.分支合并

任务分解

架构师的段位与格局:

如何拆分问题和解决问题以及宏观大局上看问题。

什么是配套环境 配套环境是指开发和测试环境,参考生产环境,以最小化实例,最小化节点,满足运行项目的环境,尽量减少环境差异,包括硬盘配置差异,网络差异,资源配置差异以及应用软件安装配置等差异。

准备配套环境

  1. 开发环境(development),也叫集成开发环境,为开发团队提供共享资源,因为每个程序员在自己电脑上运行一整套的分布式系统不现实,需要将公共部分抽离再来,集中提供服务,如数据库、缓存、搜索引擎、配置中心、注册中心等
  2. 测试环境(testing),开发环境需要频繁合并新功能,部署、重启都会影响正常的测试,如测试一般,开发环境上加入了新功能,此时会影响测试。我们需要一台独立稳定的测试环境,该环境由测试人员控制,什么时间部署和测试自己说了算。
  3. 用户交付测试环境(staging),Stage/UAT环境,Beta/Preview演示环境,定期同步生产环境数据库。
  4. 功能测试环境(feature/hotfix),新功能,bug修复等。

上面三个环境,至少一台独立的服务器,功能测试环境(feature/hotfix)需要若干台服务器。功能测试环境的服务器是共享的,谁测试谁使用,用过之后释放出来。每个环境都有一整套配置的服务,例如数据库、缓存、搜索引擎、消息队列等。

代码分支 时间线分支

  1. 开发分支 development 面向开发人员
  2. 测试分支 testing 面向测试人员,
  3. 交付验收分支 staging 交付验收分支,俗称UAT 面向测试和客户
  4. 生产分支 production,面向用户 小公司中通常省去UAT环节,直接从Testing上到生产环境。 分支保护 分支保护目的是防止误删除,禁止向该分支提交代码,代码只能通过合并方式进行该分支。 分支的权限管理:
  5. master/main:保护,不能修改代码,只能合并,只有管理员有权限push
  6. staging:保护,不能修改代码,只能合并,只有管理员有权限push
  7. testing:保护,不能修改代码,测试人员可以合并 merge
  8. development:保护,开发人员可以修改代码,合并,push
  9. tag标签: 保护,对应Release版本。

功能分支feature 任务分解以后,每个功能对应一个分支,功能分支的代码来自development分支,我们会创建很多功能分支,开发任务在功能分支上完成开发,开发完成后将任务标记为“测试”,测试部会安排测试环境,部署该分支上的代码,测试结果分为Bug和Pending(测试通过,挂起,等待发车) 买票上车:在功能分支上,我们有很多开发完成的功能,他们处于挂起状态,然后根据升级计划,有序的合并到开发分支,再到测试分支,最后升级到生产环境。

Feature分支操作步骤

  1. 创建issue议题
  2. 从Development分支创建feature分支
  3. 获取Feature分支代码
  4. 修改代码,提交代码,测试代码
  5. 合并Feature分支到Development分支
  6. 关闭issue议题