
一个软件从开始到最终交付,需要经历:规划、编码、构建、测试、发布、部署和维护。
在传统的IT行业中,开发团队(Dev)和运维团队(Ops)之间诉求不同:
- 开发团队追求变化与迭代
- 运维团队追求稳定
开发和运维之间往往存在利益的冲突。就比如,精益和敏捷的团队将持续交付作为目标,而运维团队则是为了线上的稳定和强调变更控制。
此时,为了弥合开发和运维的鸿沟,需要在文化、工具和实际方面的系列变革,出现DevOps。DevOps(Development和Operation的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或管理。透过自动化“软件交付”和“架构变更”的流程,以此使得构建、测试、发布软件能够更加地会计、频繁和可靠。在DevOps的软件开发过程包含计划、编码、构建、测试、预发布、发布、运维、监控,由此可见DevOps的强大。
系统开发环境
系统开发过程中最常用的几个环境:
- 开发环境:开发环境是开发人员专门用于日常开发的服务器。为了开发调式方便,一般打开全部是错误报告和测试工具,是最基础的环境。
- 测试环境:一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。该环境是开发环境到生产环境的过渡环境。
- 预发布环境:该环境是为了避免因测试环境和线上环境的差异等带来的缺陷漏洞而设立的一套环境。其配置等基本和生产环境一致,目的是能让我们发布正式环境时更有把握。所以预发布环境是产品发布的最后一道防线,因为下一步项目就需要上线。要注意预发布环境服务器不在线上集成服务器范围之内,为单独的一些机器。
- 生产环境:是指正式提供对外服务的线上环境,例如目前在移动端和PC端能访问的APP都是生产环境。
这几个环境也可以说是系统开发的三个重要阶段:开发->测试->上线。

对于规模稍微大点的公司来说,不仅仅这些环境。就比如项目正式上线前还存在仿真/灰度环境,有的项目存在多套测试环境,以此来满足不同版本上线前测试的需要。
一个项目的开始从设计开始,而一个项目的成功则从测试开始。一套良好的测试体系可以将系统中绝大部分的致命Bug解决子系统上线之前。测试系统的完善和成熟也是衡量一个软件企业整体水平的重要指标之一,测试有时会被忽略,因为其对软件开发企业不产生直接的效益,但是测试却是软件质量的最终保障,乃至项目能够成功的重要因素。
Git分支设计规范
有了环境的概念后,对于开发人员来说,一般会针对不同的环境来设计分支:
| 分支 | 名称 | 适用环境 |
| master | 主分支 | 生产环境 |
| release | 预发布分支 | 预发布/测试环境 |
| develop | 开发分支 | 开发环境 |
| feature | 需求开发分支 | 本地 |
| hotfix | 紧急修复分支 | 本地 |
master分支
- master为主分支,该分支为只读且唯一分支。用于部署到正式发布环境,一般由合并release分支得到。
- 主分支作为稳定的唯一代码库,任何情况下不允许直接在master分支上修改代码。
- 产品的功能全部实现后,最终在master分支对外发布,另外所有在master分支的推送应该打标签(tag)做记录,方便追溯。
- master分支不可删除。
release分支
- realse为预发布分支,基于本次上线的所有feature分支合并到develop分支之后,基于develop分支创建。可以部署到测试或者预发布集群。
- 命令以release/开头,建议的命名规则:relase/version_publishtime
- release分支主要用于提交给测试人员进行功能测试。发布提测阶段,会以release分支代码为基准进行提测。
- 如果在release分支测试出问题,需要回归验证develop分支是否存在此问题。
- release分支属于临时分支,产品上线后可选删除.
develop分支
- develop为开发分支,基于master分支创建的只读且唯一分支,始终保持最新完成以及bug修复后的代码。可以部署到开发环境对于集群。
- 可以根据需求大小程度确实是由feature分支合并,还是直接在上面开发(不推荐)。
feature分支
- feature分支通常为新功能或新特性开发分支,以develop分支为基础创建feature分支
- 命名以feature/开头,建议的命名规则:feature/user_creatertime_feature。
- 新特性或新功能开发完成后,开发人员需合并到develop分支。
- 一旦该需求发布上线,便将其删除。
hotfix分支
- hotfix分布为线上bug修复分支或叫补丁分支,主要用于对线上的版本进行bug修复。当线上出现紧急问题需要马上修复时,需要基于master分支创建hotfit分支。
- 命名以hotfix/开头,建议的命令规则:hotfix/user_createtime_hotfix
- 当问题修复完成后,需要合并到maser分支分支和develop分支并推送到远程。一旦修复上线,就需要将其删除.

以上时企业级常用的一种GIt分布设计规范:GIt Flow模型。但是该模型并不是适用于所有的团队,所有的环境和所有的文化。
826

被折叠的 条评论
为什么被折叠?



