随着企业快速发展和竞争的加剧,产品和协作的复杂度提升,业务对研发效能的期望越来越高,如何提高团队软件交付速度要求企业具备快速响应的能力,这正是推动持续集成、持续交付、持续部署的动力。
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
开始运行流水线
开始触发集成分支流水线,开展代码扫描和单元测试,通过流水线可以直观看到扫描结果是否成功,详细结果可以通过测试报告查看。
质量红线结果
测试任务会根据对应的质量红线判断,如果不通过,无法进入流水线下一阶段;考虑到一些特殊的情况,未通过质量红线的流程也需要继续往下执行,云效也提供了“跳过”的能力,可以由管理员将红线跳过。
查看流水线运行结果
所见即所得,流水线运行过程直观展示,企业可完整看到当前流水线运行所处阶段和场景;
•集成分支流水线
钉钉消息通知
基于任务可以快速配置消息通知,可以便于在流水线执行过程中及时接收消息通知,快速定位排查和解决问题。