布景
跟着技能团队的发展壮大,交流壁垒越来越高,整个协作过程中存在较多的流程痛点;一起为了饯别DevOps理念,我们前端研制团队也进行了流程提效实践,本次首要共享我们对分支办理的标准的了解,旨在为大家供给愈加高效和灵敏的研制环境。
现状与痛点
前史:
- 向ops团队请求创立Feature分支。
- 向ops团队请求上线,合并代码分支等等,ops团队担任发布,对服务运转状况并不清楚。
研制的声音:
“运维忙起来发版得排队等半天,影响我们上线”
“周末/深夜紧急上线需要把运维同学叫起来,联系不上/不及时的话还会影响事务”
“master分支合并对研制来说黑盒,不确定上线完成后什么时候会合并到master”
….
运维的声音:
“便是个客服机器人,干的都是体力活”
“配置改成这样是什么含义并不清楚”
“累啊….”
….
带来的问题:
-
版别发布危险的添加
线上发版依赖于运维团队执行上线方案,可能会呈现忙时发版排队、配置错配或漏配的情况,这会添加发布呈现问题的危险,一起也会影响产品上线的速度和质量。
-
毛病排查时职责不明
当呈现线上毛病时,研制团队和运维团队可能会呈现职责不明、交流不畅的情况。这会导致毛病排查时刻过长,影响产品的可用性和用户体验。
-
运维效能无法提升
重复性作业将会占有运维绝大部分时刻,无法专心在运维效能的提升上。
方针
饯别Devops理念,研制运维一体化
一体化意思是将系统开发和IT运维两个过程结合起来,使得研制团队能够自己担任部署、维护和监控自己开发的应用程序。
这种模式的优点是能够加速需求的交给速度、进步运维效率和减少交流成本。
运维能愈加专心在运维效能的提升上,将效果正向反馈给研制团队。
研制TEAM对交给质量担任
一个研制Team/Squad会包括产品、测验、前后端研制等首要角色,作为软件交给的职责单元,作为一个全体,需要对交给的软件产品的质量担任。
运维专心于运维效能提升
- 自动化运维工具和流程
- 监控体系的优化
- 容器化技能
具体内容
全体流程变动点,“单点->并发”的改变。
Before | After | |
---|---|---|
分支办理 | 由运维分配分支,运维合并分支,有问题再找研制 | 权限下沉,事务线Team闭环办理,依据团队成熟度、事务复杂度选择适宜的分支办理模型。 |
上线发版 | 收到上线请求,运维全保管,上线完成后事务线Team走验收流程 | 事务线Team闭环办理,发版权限放权给各TeamLeader。 |
环境办理
-
DEV
- 开发环境,支撑与跨团队服务联调
-
TEST-X
- 测验环境,多版别测验使用,版别相对安稳。(研制别动、研制别动、研制别动)
-
PREPROD
- 回归环境、验收环境(研制别动、研制别动、研制别动)
-
PROD
- 出产环境,面向实际用户
分支办理
分支办理由过去的运维全保管的方法变成松散自在的办理方法,现在不再做强制性约束,以研制团队为首要决议计划单元,将分支办理的事务下沉到研制单元内部决议计划,运维人员不再参与分支办理事宜,能更好的将重心放在运维效能的提升上。
常用分支办理模型
- TBD(Trunk-Based-Development)
- Git-Flow
- Github-Flow
- Gitlab-Flow
- Aone-Flow
- …
“分支办理没有银弹”
“适合团队的,才是最好的。”
GitFlow
-
master分支
- 只存放前史发布(release)版别的源代码。各个版别通过tag来标记。
-
develop分支
- 用来整合各个feature分支。开发中的版别的源代码存放在这里。
-
Feature分支
- feature分支派生自develop分支,当feature开发结束后,要合并回develop分支。feature分支永久不会和master分支打交道。
-
Release分支
- release分支不是一个放正式发布产品的分支,你能够将它理解为“待发布”分支。我们用这个分支干一切和发布有关的工作,比方:提测、修正bug等
-
Hotfix分支
- hotfix分支派生自master分支,仅仅用于修正bug,当bug修正结束后,立刻回归到master分支,然后发布一个新版别,比方v0.1.1。
- 一起hotfix也要合并回develop分支。
团队Flow
团队过去的分支办理模型便是类似Aone-Flow的分支办理模型。基本兼顾了TrunkBased的“易于持续集成”和GitFlow的“易于办理需求”特色,一起躲避掉GitFlow的那些繁文缛节。
三种类型:
- 骨干Master
- 功能/特性Feature
- 发布Release
创立Feature/Hotfix分支
合并Feature分支,形成发布分支
上线成功后,将发布分支合并回骨干
注意的点:
- 上线成功后一定要将发布内容合并回骨干,坚持骨干具有最新运转版别的分支。
- 预发或许其他环境验收前,需要将骨干合并回功能feature分支,将代码冲突等处理前置。