2

你了解部署流水线吗?

 2 years ago
source link: https://juejin.cn/post/7077757377386610718
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

什么是部署流水线

img

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

如何构建流水线

流水线设计

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

img

各环节自动化实现

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

创建流水线

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

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

公司部署频率部署效率亚马逊23000次/天分钟级谷歌5500次/天分钟级Netflix500次/天分钟级Facebook2次/天分钟级Twitter3次/周分钟级

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

流水线的优点

提高交付效率

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

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

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

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

DevCloud实践

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

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

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

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

img

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

img

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

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

img

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

img

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

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

img

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

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

img

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

img

img

国内企业部署的现状

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

img

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK