如何快速实现持续交付

随着企业快速发展和竞争的加剧,产品和协作的复杂度提升,业务对研发效能的期望越来越高,如何提高团队软件交付速度要求企业具备快速响应的能力,这正是推动持续集成、持续交付、持续部署的动力。

1、用户的诉求或问题

  • 团队没有统一的研发管理流程,工具无约束,无法严格遵守流程规范。

  • 发布时间长,需要人工介入多,无论从时间成本,还是由于人工介入带来的风险都很大。

  • 缺乏统一的研发平台,自动化程度低,没有有效的质量保障体系,基础设施保障的建设往往落后于企业的快速发展。

  • 业界有很多很好的实践,但是复用到自己团队却很难,无从下手。

2、云效持续交付架构图

云效,企业级一站式DevOps解决方案,源于阿里巴巴先进的管理理念和工程实践,提供从“需求->开发->测试->发布->运维”端到端的协同服务和研发工具,支持多种部署形态。通过代码扫描、代码评审等能力,助力企业持续、快速、高质量地交付软件。

持续交付1

以上架构图中展示了企业开发团队协同办公的流程示意图,流程介绍如下:

1.晨会上团队基于云效看板进行需求、任务对齐,完成任务指派;

2.开发同学根据特性开发,创建变更分支;

3.通过线下或云端开发环境进行编程工作,然后提交代码;

4.代码提交自动触发代码扫描,并做完分支级别的验证,发送给指定代码评审员进行评审;

5.完成评审的代码自动触发集成发布流水线,自动化的完成构建,生成Docker镜像,分别在开发环境、集成环境及预发环境进行部署,完成相应的验证工作;验证完之后处于待发布状态,触发上线审核流程,运维完成审核发布上线;

6.过程中任何问题通过钉钉,遵循no news is good news的原则,自动化地及时反馈到指定负责人,做到准确反馈、即时响应,快速恢复。尽量避免垃圾短信式反馈,过多的噪音,反而会降低协作的效率。

3、场景介绍及操作指南

第一步:通过代码平台进行代码托管和评审

说明

立即体验:云效代码管理 Codeup

创建一个代码库

你可以开始创建自己的第一个仓库,通过代码库列表右上角新建代码库。高的

基于特性分支编码

基于控制台新建分支,开发人员进入编码阶段,可以通过代码平台在线方式或者本地编码模式,在代码完成后提交远端分支;在代码提交时可以使用#ID语法建立代码和任务的关联,如git commit -m "#id"。高的 (1)

开启代码扫描

新建检测任务,设置代码提交触发扫描检查,在代码提交后可以看到检查的运行情况。高的 (2)高的 (3)

发起代码评审

通过新建合并请求发起代码评审,强制代码评审有利于提高代码质量,帮助开发人员尽早发现问题,提高问题修复的效率。高的 (4)

代码合入集成分支

分支通过代码评审后,合并到集成分支,即将进入编译、部署、验证、发布阶段。

第二步:通过流水线实现持续交付

说明

立即体验:云效流水线Flow

创建一条流水线

点击流水线列表右上角【新建流水线】按钮,您可以快速选择一款适合企业场景的模板。高的 (5)

编辑流水线场景

通过流水线编辑功能,结合企业场景快速配置以下2条流水线:

  • 集成环境流水线高的 (6)【步骤说明】

    • 触发方式选择:代码提交触发

    • 集成分支开始代码扫描和单元测试;

    • 测试通过开始代码构建;

    • 编译通过部署测试环境;

    • 测试同学测试验证;

    • 验证通过代码合并发布分支;

  • 发布环境流水线矮的【步骤说明】

    • 发布分支开始构建编译;

    • 编译通过部署预发环境;

    • 预发环境验收测试;

    • 验证通过开始发布单审核;

    • 审核通过部署生产环境;

配置质量红线

添加红线卡点,当前测试任务必须达到标准才能进入下阶段;例如【代码扫描】选择“添加红线”,可以设置:

• Blocker的问题为0

• Major的问题为0

• Critical的问题为0高的 (7)

开始运行流水线

开始触发集成分支流水线,开展代码扫描和单元测试,通过流水线可以直观看到扫描结果是否成功,详细结果可以通过测试报告查看。

高的 (2)

质量红线结果

测试任务会根据对应的质量红线判断,如果不通过,无法进入流水线下一阶段;考虑到一些特殊的情况,未通过质量红线的流程也需要继续往下执行,云效也提供了“跳过”的能力,可以由管理员将红线跳过。高的 (8)

查看流水线运行结果

所见即所得,流水线运行过程直观展示,企业可完整看到当前流水线运行所处阶段和场景;

•集成分支流水线

交付44

钉钉消息通知

基于任务可以快速配置消息通知,可以便于在流水线执行过程中及时接收消息通知,快速定位排查和解决问题。