随着企业快速发展和竞争的加剧,产品和协作的复杂度提升,业务对研发效能的期望越来越高,如何提高团队软件交付速度都要求企业具备快速响应的能力,这正是推动持续集成、持续交付、持续部署的动力。
1、用户的诉求或问题
团队没有统一的研发管理流程,工具无约束,遵守流程规范基本靠自觉;
发布时间长,需要人工介入多,无论从时间成本,还是由于人工介入带来的风险都很大?
缺乏统一的研发平台,自动化程度低,没有有效的质量保障体系,基础设施保障的建设往往落后于企业的快速发展?
业界有很多很好的实践,但是复用到自己团队却很难,无从下手。
2、云效持续交付架构图
云效,企业级一站式DevOps解决方案,源于阿里巴巴先进的管理理念和工程实践,提供从“需求->开发->测试->发布->运维”端到端的协同服务和研发工具,支持多种部署形态。通过代码扫描、代码评审等能力,助力企业持续、快速、高质量地交付软件。
步骤
1.晨会上团队基于精益看板进行需求、任务对齐,完成任务指派;
2.开发同学根据特性开发,创建变更分支;
3.通过线下或云端开发环境进行编程工作,然后提交代码;
4.代码提交自动触发代码扫描,并做完分支级别的验证,发送给指定代码评审员进行评审;
5.完成评审的代码自动触发集成发布流水线,自动化的完成构建,生成Docker镜像,分别在开发环境、集成环境及预发环境进行部署,完成相应的验证工作;验证完之后处于待发布状态,触发上线审核流程,运维完成审核发布上线;
6.过程中任何问题通过钉钉,遵循no news is good news的原则,自动化地及时反馈到指定负责人,做到准确反馈、即时响应,快速恢复。尽量避免垃圾短信式反馈,过多的噪音,反而会降低协作的效率。
3、场景介绍及操作指南
第一步:通过代码平台进行代码托管和评审
立即体验:云效代码管理 Codeup
创建一个代码库
你可以开始创建自己的第一个仓库,通过代码库列表右上角【新建代码库】;
基于特性分支编码
基于平台新建分支,开发进入编码阶段,可以通过代码平台在线方式或者本地编码模式,代码完成后提交远端分支;在代码提交时可以使用#ID语法建立代码和任务的关联,如git commit -m "#id"
开始代码扫描
由于设置了代码提交触发扫描检查,这里可以清晰看到检查的运行情况;
发起代码评审
通过新建合并请求发起代码评审,强制代码评审有利于提高代码质量,帮助开发人员尽早发现问题,提高问题修复的效率;
代码合入集成分支
分支通过代码评审后,合并到集成分支,即将进入编译、部署、验证、发布阶段;
第二步:通过流水线实现持续交付
立即体验:云效流水线Flow
创建一条流水线
点击流水线列表右上角【新建流水线】按钮,您可以快速选择一款适合企业场景的模板;
编辑流水线场景
通过流水线编辑功能,结合企业场景快速配置以下2条流水线:
•集成环境流水线
【步骤说明】
*触发方式选择:代码提交触发;
*集成分支开始代码扫描和单元测试;
*测试通过开始代码构建;
*编译通过部署测试环境;
*测试同学测试验证;
*验证通过代码合并发布分支;
•发布环境流水线
【步骤说明】
*发布分支开始构建编译;
*编译通过部署预发环境;
*预发环境验收测试;
*验证通过开始发布单审核;
*审核通过部署生产环境;
配置质量红线
添加红线卡点,当前测试任务必须达到标准才能进入下阶段;例如【代码扫描】选择“添加红线”,可以设置:
•Blocker的问题为0
•Major的问题为0
•Critical的问题为0
开始运行流水线
开始触发集成分支流水线,开展代码扫描和单元测试,通过流水线可以直观看到扫描结果是否成功,详细结果可以通过测试报告查看;
质量红线结果
测试任务会根据对应的质量红线判断,如果不通过,无法进入流水线下一阶段;考虑在一些特殊的情况下,未通过质量红线的流程也需要继续往下执行,云效也提供了“跳过”的能力,可以由管理员将红线跳过。
查看流水线运行结果
所见即所得,流水线运行过程直观展示,企业可完整看到当前流水线运行所处阶段和场景;
•集成分支流水线
•发布分支流水线
钉钉消息通知
基于任务可以快速配置钉钉消息通知,可以便于在流水线执行过程中及时接收消息通知,快速定位排查和解决问题;
总结
通过【代码平台和流水线】组合出击规范代码管理和应用发布,快速实现持续交付。