云效,一站式企业协同研发云,源于阿里巴巴多年先进的管理理念和工程实践,提供从“需求->开发->测试->发布->运维->运营”端到端的协同服务和研发工具支撑。
开发理念:git分支模式。当从产品接到新的任务后,需要创建一个此任务的feature分支。需要完成这个任务的人员都在此分支下开发。master分支,是任何研发人员都不能去(push)提交,只有当分支代码上线完成后,通过工具(脚本)的方式将分支merge到master上。任何研发人员每天一来都需要从master拉取代码,合并到自己的开发分支上,从而保证少的冲突。
云效有几个概念:项目、应用、流水线、特性分支。
1.创建项目
2.创建应用
一个项目中可以有多个应用,每个应用会关联一个git代码库,一个应用中可以包含多个流水线。
3.创建流水线
流水线可以分为日常环境、预发布环境、产品环境,当然也可以自定义环境,比如灰度等。对于一个比较大的项目,很多研发人员都在往里面修改或添加功能。当然这个本身是有问题的,项目拆分得不够细,策略是比较独立的功能逐步往新项目拆。正常情况下测试环境一个就可以了,但是可能会出现以下问题。
1)在测试feature分支的时候,线上出现了一个bug需要紧急修复。可能feature分支和bug分支修改相同的文件,那么一起提交到测试环境的时候,就会出现冲突,就算解决冲突后,代码环境和线上不一致,可能测试不出来。
2)对于多个feature分支都在测试的时候,一个feature测试好了后需要上线,两个feature一起的时候可能正常,但是一个feature上线可能就不正常,上线到预发布环境后,加大了测试同学工作量。
3)一部分人在开发联调阶段、一分部人需要提测或上线,造成测试环境极不稳定。
所以目前我们测试环境分了3个版本。feature功能性测试环境、hotfix需要快速上线环境、debug联调环境,这个3个环境对应到不同的服务器。
流水线里面可以做什么?配置不同的环境、分发不同的机器、通过不同的shell脚本来处理代码(打包等)。 云效中上线到流水线是先从master checkout 一个release分支,然后将上线的分支逐一合并到release分支。
下图是一个通过了测试环境,准备上线的流水线。
flowline.png
流水线设置
seting.png
单元测试、部署、人工卡点、合并主干,上图的这些顺序是可以拖动,且在每个环境都可以不一样,一般是研发提交上线后,会进入人工卡点,测试通过后就进入部署环节,最后上线通过后,会合并到master。
4.特性分支
在云效中可以创建一个全新的git特性分支,也可以关联已有的git分支。特性分支有几个状态:开发中、待发布、发布中、删除。开发完成后,需要点击提交到待发布,然后才可以在流水线中看到待发布分支。
应用中的环境配置
env.png
感悟:云效确实解决了我们人员扩张后,随之而来的是开发上线的效率低下问题。我们之前通过walle部署上线和svn版本管理。所有的代码都提交到主分支上,导致不同feature上线时间不一致,需要将别人代码回滚,因为大家都可能修改相同的文件,而且还是多人多次相互提交,回滚代码相当困难。切换到云效模式后,当然也会出现不同feature修改相同文件,那么解决办法是先上线的不管(已经合并到master),后上线的再合并master的代码。
网友评论