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

什么是部署流水线

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

如何构建流水线

流水线设计

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

各环节自动化实现

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

创建流水线

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

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

公司

部署频率

部署效率

亚马逊

23000次/天

分钟级

谷歌

5500次/天

分钟级

Netflix

500次/天

分钟级

Facebook

2次/天

分钟级

Twitter

3次/周

分钟级

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

流水线的优点

提高交付效率

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

保障质量

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

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

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

DevCloud实践

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

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

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

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

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

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

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

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

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

7.执行完成后,查看执行结果。单击构建任务旁的

,可以下载通过流水线自动构建出来的构建包。

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

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

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

国内企业部署的现状

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

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

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

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

你了解部署流水线吗?相关推荐

  1. 持续集成与持续部署宝典Part 4:创建持续部署流水线

    2019独角兽企业重金招聘Python工程师标准>>> 随着Docker项目及其相关生态系统逐渐成熟,容器已经开始被更多企业用在了更大规模的项目中.因此,我们需要一套连贯的工作流程和 ...

  2. Jenkins 自动化部署流水线优化经验

    Jenkins 自动化部署流水线优化经验 1.1 跳过测试类 1.2 使用较为稳定的jenkins 企业长期支持版本 1.3 限制Jenkins 使用内存大小 这篇博文主要总结下在生产环境使用Jenk ...

  3. java中搭建流水线,部署流水线搭建小记:Docker、Jenkins、Java 和 Couchbase

    Jenkins支持创建流水线.它使用一种基于Groovy的流水线领域特定语言(Pipeline DSL)的简单脚. 而这些脚本,通常名字叫Jenkinsfile.它定义了一些根据指定参数执行简单或复杂 ...

  4. jenkins 触发 Rancher实现自动部署 流水线一键操作

    IDEA 修改代码 提交 gogs 自动触发 jenkins 流水线打包构建. 2. jenkins 构建完成以后触发 Rancher 自动部署 2.1 创建服务并启动: 不配置端口映射通过负载均衡实 ...

  5. 持续交付流水线的敏捷利器:环境配置管理与应用部署自动化

    作者介绍 陈能技,DBAplus社群原创专家,新炬网络首席DevOps专家.14年开发测试与质量架构经验,擅长DevOps及APM.Docker.持续集成.持续交付在企业中的落地实施.著有<软件 ...

  6. 持续集成与持续部署宝典Part 2:创建持续集成流水线

    2019独角兽企业重金招聘Python工程师标准>>> 在本系列文章中,我们将探讨在容器时代如何在基于Docker的环境中创建连贯的工作流程和流水线来简化大规模项目的部署.另外,我们 ...

  7. 云效搭建流水线实现自动化构建部署

    前言 云效,是阿里云提供的一款服务类产品,能够多人协作开发集成.多种编程语言构建打包和分布式集群部署发布等服务.轻松搭建从代码提交.集成.构建到测试环境.预发环境.线上环境部署发布验证的持续交付流水线 ...

  8. Spinnaker:云原生多云环境持续部署的未来这样玩!

    Gartner的报告指出,到2020年,将有50%的传统老旧应用会以云原生的方式被改造,到2022年,云原生和容器化的普及率将达到75%. 随着2020 KubeCon线上大会的结束,我们发现企业拥抱 ...

  9. javaweb k8s_阿里云部署K8Sweb项目

    一.背景 如果你 1.使用Java进行开发 2.使用容器镜像的制品形式进行交付 3.制品最终会运行在阿里云ACK或者其他K8S集群上 那么本文档可以帮助您实现研发流程的协同自动化. 二.用户诉求 1. ...

最新文章

  1. yaml-cpp介绍
  2. R语言ggplot2可视化散点图实战:绘制基础散点图、为所有散点添加标签、只为大于阈值的散点添加标签
  3. 论一名项目经理的能力素养
  4. Playmaker Input篇教程之引入的核心概念
  5. 我自学python的路-Python学习路线图的总结
  6. 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL
  7. SAP的号码范围(number range)SNRO和SNUM自动编号工具的用法
  8. 构造函数和析构函数能否声明为虚函数?
  9. Action以外的类中来获得Spring所管理的Service对象
  10. 找出不是两个数组共有的元素_[数组] N数之和问题
  11. MAC代码下统计代码行数工具
  12. 腾云驾雾了解Windows10和微软私有云
  13. poj4001 Xiangqi
  14. java娘_初识java这个小姑娘(二)
  15. 基于freemarker(mht)方式导出带图片的富文本word
  16. 神剧制作《黑镜》第四季基本剧情,良心制作
  17. 织梦插件,织梦dedecms自动采集插件,自动采集
  18. Java系列技术之JavaWeb入门-钟洪发-专题视频课程
  19. linux mv编写代码,Linux命令--mv(示例代码)
  20. 无线体感仿生机械手之数据手套远程操控仿生机械手测试视频

热门文章

  1. vue/xx/事件监听,按键与键码值
  2. 惊呆了! | Spring Boot 使用 @Value 读取配置还能这样用
  3. oracle dba开头的表,KU$开头的表是什么表?
  4. python 魔法函数是什么意思_Python 中的魔法函数
  5. webapi输出炜json_webapi转化为json格式
  6. 差分电荷密度怎么画_科学网差分电荷密度图、电荷局域密度图(ELF)的画
  7. Java小 orm_这么优雅的Java ORM没见过吧!
  8. php判断手机浏览器,php 获取 手机浏览器的信息 | 学步园
  9. 偏振模色散及保偏光纤的正确理解
  10. php正则式去掉问号后所有,正则表达式如何过滤问号