摘要:本文将带您体验部署流水线实践。

本文分享自华为云社区《​​你了解部署流水线吗?​​》,作者: 敏捷小智。

什么是部署流水线

你了解部署流水线吗?_代码检查

部署流水线,又称持续集成流水线、构建流水线,是指软件从制品库到用户的自动化交付过程。通常包括代码提交、构建、部署、测试、发布环节。部署流水线实现DevOps模式下持续开发、持续测试、持续集成、持续部署和持续监控这些活动的编排并自动化执行,及时获得结果反馈,实现商业敏捷化。

如何构建流水线

流水线设计

构建一条部署流水线,首先要根据软件架构和业务特点,确定流水线的各个环节内容,如下就是某产品开发的流程设计。从大框架上需要包含构建、部署、测试和发布这几个环节。其中构建包含代码提交、本地构建、云端构建、静态检查、单元测试;部署包括测试环境的部署,α、β、γ环境部署。各环境中的测试实施,其中“Dog food(吃狗粮)”是互联网公司的一种文化,指的是自研自用,即部署到内网环境,供大家使用;发布包括依据发布策略,实施发布。如下图所示。

你了解部署流水线吗?_代码检查_02

各环节自动化实现

流程确定后,然后要实现集成、交付、部署和发布各环节的自动化,自动化不等于不需要人的参与,而是将复杂易错、重复的步骤变成可靠的自动化步骤。

创建流水线

最后将各个环节统一编排成流水线,设置质量门禁,实现提交代码即触发自动部署的功能。

实现构建流水线,团队需要有良好的基础服务支撑,包括配置管理,可实现自动化配置的脚本等。业界领先的互联网公司很多都采用基础支撑服务云化,服务端程序部署频率都非常快。根据《凤凰项目》一书中的记载,业界Top互联网公司的网站部署频率如下:

你了解部署流水线吗?_流水线_03

此外,团队成员要遵守共同的规则,比如代码变更即上流水线,有错误发生及时暂停,待问题解决后再继续等,需要团队成员共同制动并遵守。

流水线的优点

提高交付效率

流水线编排客户实现CI、CD无缝结合,快速迭代,让价值流快速流动,适应市场需求频繁变化。端到端的流水线,让各个流程透明可视化,团队人员可以随时获取需要的信息,哪个版本出现了问题回退,当前版本所处的阶段等。同时可视化也能发现流程中的瓶颈环节,进行优化和调整,使流水线不断的演进,提升交付效率。

保障质量

流水线的每个环节都会有反馈,实现完整快速的反馈循环,团队获得反馈,有利于及时改进,保证质量;并且每个环节都可设置质量门禁,实现质量的层层保障。

加强团队建设,改善组织文化

流水线的各个环节让开发、测试、运维人员都参与进来,共同协作,打破部门之间的隔阂,改善公司组织文化、提高员工的参与感。

DevCloud实践

​华为云DevCloud​​​提供了一站式端到端部署流水线:

用户提交代码后,自动触发流水线执行编译构建、代码检查等任务;配置构建、代码检查、部署、测试等多种自动化任务,完成一键式出包发布上线生产全流程;每天定时执行,保障工程质量。

以快速上手流水线为例,在这个流水线中,包含代码检查、构建和质量门禁设置三个环节,其中的代码检查和构建是已经创建好的任务,质量门禁可以在创建流水线的同时创建。下面演示是如何创建和执行流水线。

1. 进入已创建的项目,在顶部导航栏单击“构建&发布 > 流水线”,进入流水线。

2. 单击右上角“新建流水线”,进入“创建流水线”页面。根据界面提示填写基本信息、选择模板、选择代码源,然后单击“下一步”。

你了解部署流水线吗?_流水线_04

3.进入工作流配置页面,在构建阶段,选择类型为“代码检查”,然后添加已创建的代码检查任务。

你了解部署流水线吗?_DevCloud_05

接着按照相同方法,添加已创建的构建任务。

4.单击质量门禁下加质量门禁,选择“门禁任务”类型,然后单击“点击创建”。

你了解部署流水线吗?_流水线_06

5.填写门禁名称(如:test01),并将代码检查任务对应的门禁项“CodeCheck问题数”开关打开,保存并选择已创建的门禁。

你了解部署流水线吗?_部署_07

6.任务配置完成后单击“保存”,进入流水线详情页面,单击“全新执行”,一键执行流水线。

7.执行完成后,查看执行结果。单击构建任务旁的符号,可以下载通过流水线自动构建出来的构建包。

你了解部署流水线吗?_DevCloud_08

8.配置Codehub源码仓库触发器,可以实现提交代码后自动触发流水线执行。进入“创建流水线 > 选择代码源”页面或者“流水线配置 > 添加代码源”页面,分别配置Codehub触发器和码云触发器。

展开“更多设置”,在触发分支中选择关联仓库的指定分支,如:“master”。保存流水线后触发器即刻生效,当指定仓库分支中有代码提交时,会自动触发关联流水线执行。

你了解部署流水线吗?_流水线_09

通常一个项目的流水线不仅仅是上面的几项,根据业务特点和软件架构的不同,工作流的编排而互不相同,但基本上都包括构建、部署、测试、发布环节,每个环节的任务设置会不尽相同。如下图为某团队的部署流水线样例。

你了解部署流水线吗?_DevCloud_10你了解部署流水线吗?_代码检查_11

国内企业部署的现状

根据《中国 DevOps 现状调查报告(2021)》,大概有六成受访者所在的企业部署频率为1周到1个月1次,同比2020年增长了近一成。仅有16.21%的企业能够每天多次在生产环境进行部署;此外,9.33%的企业部署频率超过 1 个月。

你了解部署流水线吗?_代码检查_12

数据来源:中国信息通信院

由以上调查数据可见,2021年国内企业的部署频率已经比2020年有所提升。在当前的VUCA时代,为了应对不确定性,我们要提升自己的业务敏捷程度,小步快跑,及时获得反馈。因此通过自动化和流水线技术提高部署的频次和效率是必不可少的。引入云平台,简化部署和编排操作,让团队将更多的精力专注到业务的研发上更是大势所趋。


点击关注,第一时间了解华为云新鲜技术~