前言

由于我们使用Gitlab代码托管平台,以feature branch的形式进行提交,所以准确的说我们用的是Scaled Trunk Based Development。

TBD准确的说不是一种"分支策略模型",它更像是一种"分支策略模型"的规范。因此对它的使用不像是Gitflow那样有一套标准的workflow进行参考。我们在执行TBD到我们的项目中的时候,应该结合规范,参考其它TBD的应用结合我们自己的使用场景来执行。

一般而言我们只有一个分支----trunk分支(master分支),所有的开发和release工作都是在这个分支上进行。我们可以在trunk分支上以tag的形式进行release版本。如果有需要的话我们可以从相应的tag处检出release分支。通过从trunk分支上cherry-pick bug fix patch的形式,对release分支的维护。release分支和master分支之间不存在merge操作。

版本开发基本流程

遵循TBD进行项目版本开发过程中最关键的几部分就是:

  • 代码提交
  • 代码评审
  • 待发布版本测试
  • 版本发布
  • 发布版本热修复

代码提交

为了Gitlab代码评审的需要,我们使用Feature Branch进行提交:

  • Developer本地同步master分支
  • Developer本地从master分支上检出feature branch
  • Developer完成开发提交到feature branch
  • Developer检查本地master是否最新,如果不是的话同步master分支,然后快进feature branch
  • Developer push feature branch到Gitlab仓库

代码评审

我们使用Gitlab进行代码评审:

  • Developer在Gitlab上发起merge request,请求将feature branch合并入master分支
  • Reviewer收到请求后,进行代码评审,fetch feature branch到本地进行测试
  • 测试通过后通知Maintainer合并请求,删除掉feature branch
  • 测试不通过,close掉merge request,删除feature branch后通知Developer进行修改并重新提交

待发布版本测试(rc测试)

当前版本规划的feature全都开发完后,进入到“待发布版本测试”阶段。此阶段不再允许合入新的特性。测试人员对项目进行测试(功能测试,压力测试),反馈Bug给开发人员进行Bug修复。

  • Maintainer从dev分支上检出release,更新版本信息(记录当前版本引入了哪些feature),打tag:sdk_vx.y
  • Tester对项目进行测试,反馈Bug给Developer
  • Developer在master上复现问题
  • Developer在master上解决问题,并提交到master上(如果master上不存在这个问题,直接往release上提交)
  • Developer在本地cherry-pick bugfix到release分支(我们的gitlab目前还不支持cherry-pick,所以只能在本地操作)
  • 在release分支上进行“代码提交”“代码评审”
  • Maintainer合并时根据需要打tag:sdk_vx.y-rcx

版本发布

版本测试通过后进入到“版本发布”阶段

  • 采用release分支制作tar包
  • 对tar包进行测试
  • 测试通过后上传NAS,供FAE使用

发布版本热修复

发布出去的版本发现了严重Bug需要立即修复后进行发布,此时需要用到“发布后热修复”:

  • Developer在release分支上复现问题
  • Developer在master分支在上面复现问题
  • Developer在master上解决问题,并提交到master上(如果master上不存在这个问题,直接往release上提交)
  • 在master分支上进行“代码评审”“合并”
  • Developer在本地cherry-pick bugfix到release分支(我们的gitlab目前还不支持cherry-pick)
  • 在release分支上进行“代码提交”“代码评审”“合并”
  • Maintainer合并时根据需要打tag:sdk_vx.y.z

此阶段也需要在合适的时候进行rc测试

补充

在使用TBD进行团队协作时,存在以下几种提交行为:

  • 往master分支上提交feature
  • 往master分支提交某一release分支的bugfix,然后cherry-pick到release分支
  • 往master分支上提交feature,然后cherry-pick到release分支

为了减小维护已经发布版本的压力,发布出去的版本尽量集中(最好是一个分支),这样可以减小我们维护的工作量这样可以减少我们在不同release分支和master分支之间的bugfix的cherry-pick,feature的cherry-pick。

版本开发基本流程——TBD Workflow(四)相关推荐

  1. SDK项目开发基本流程——TBD Workflow(二)

    项目规划:制定下一个版本应该合入哪些特性,制定项目schedule,项目分工 版本新特性开发:开发下一个版本的特性,每周同步进度,及时修改schedule 版本测试:所有特性开发完成后,不再合入新特性 ...

  2. Design Development Workflow with Framer X 使用Framer X进行设计和开发工作流程 Lynda课程中文字幕

    Design & Development Workflow with Framer X 中文字幕 使用Framer X进行设计和开发工作流程 中文字幕Design & Developm ...

  3. travis ci_如何使用Travis CI和GitHub进行Web开发工作流程

    travis ci by Vijayabharathi Balasubramanian 通过Vijayabharathi Balasubramanian 如何使用Travis CI和GitHub进行W ...

  4. githooks_使用Githooks改善团队的开发工作流程

    githooks by Daniel Deutsch 由Daniel Deutsch 使用Githooks改善团队的开发工作流程 (Improve your team's development wo ...

  5. 我的软件测试之旅:(10)贡献——开发项流程

    开发项流程(Development Item Process) 当时的这个Scrum试点项目身负重任,其中之一就是要探索出在新型的敏捷模式下该使用何种的开 发流程,负责人就是当时的Linux部门经理, ...

  6. centos 开发套件_替代的Laravel套件开发工作流程

    centos 开发套件 This article was peer reviewed by Francesco Malatesta. Thanks to all of SitePoint's peer ...

  7. 开发工作流程_您应该了解的9个开发工作流程升级

    开发工作流程 Every once in a while I run into a tool or plugin so useful I can't not add it to my arsenal. ...

  8. SAP UI5 应用开发教程之一百零四 - SAP UI5 表格控件的支持复选(Multi-Select)以及如何用代码一次选中多个表格行项目

    一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...

  9. App项目设计开发完整流程

    App项目设计开发完整流程 1. idea形成--APP项目雏形 一个APP项目的最初首先要确定项目整体方案,整个项目的规划,大体框架,做成文档展现出来,以便大家提意见和更好的改进.也就是说首先要确立 ...

最新文章

  1. php在线炒河粉,在线炒河粉表情包
  2. php 变更 obj,php怎么将object转为string
  3. RSA, ACS5.X 集成配置
  4. VC MFC界面上显示BMP图片
  5. 【C语言】有3个数a,b,c,要求按大小顺序把它们输出(基础法)
  6. 信息学奥赛一本通 2067:【例2.5】圆
  7. mysql中like与rlike_MySQL中RLIKE运算符的使用详解-mysql教程-
  8. windows下mysql+apache+php配置
  9. 试验设计——均匀试验设计·好格子点法
  10. 大学一级计算机字处理模拟题,大学计算机一级模拟操作题2
  11. cosx等价无穷小_第一章 函数与极限 第七节 无穷小的比较
  12. Arouter 跳转失败activityResumeTrigger: not whiteListed
  13. 什么软件可以测试提速,谁是手机加速神器?三款常用加速软件横评
  14. 对「曲线拟合」和「最小二乘法」的个人理解
  15. electron打开文件的几种实现方式
  16. [游戏]近期期待作品一览
  17. centos7 网桥桥接、网卡绑定终极实战
  18. 美通企业日报 | 万豪将在全球取消一次性小瓶洗漱用品;保乐力加在中国建首家麦芽威士忌酒厂...
  19. linux下fdisk命令实战案例之详解
  20. 在 vs code 中使用 go 插件时相关工具的正确安装方式

热门文章

  1. 如何查看oracle数据库的端口号,如何查找Oracle数据库的URL和端口?
  2. 华为认证的考试预约和续证
  3. properties语言包字数统计
  4. c++ 求解球面距离
  5. oracle数据库郭斌_上上签电子签约亮相Oracle NetSuite中国峰会,战略携手共赢To B生...
  6. 浙江财经计算机学院,浙江财经大学信息学院导师介绍:王继林
  7. long long类型上限_【oracle】long类型使用方法
  8. 关于微信跳转,这里有你想知道的一切weixin://dl/business/?ticket=td9cd0bf056c561fe9f56e33c61df61bf...
  9. 计算机模拟在铸造领域的应用,铸造过程计算机模拟研究应用现状与发展
  10. Word 2007教程:使用多级编号列表