华为云DevOps系列之 —— 持续部署与发布(十)自动化交付流水线

举报
ruochen 发表于 2021/10/24 14:15:38 2021/10/24
【摘要】 华为云DevOps系列之 —— 持续部署与发布(十)自动化交付流水线

流水线历史

  • 流水线一词来自于工业化制造业的一个发明,通过它重塑了工业化制造的标准和效率
  • 1910年,福特在高地公园建立的新工厂,第一次向世界展示了流水线大规模制造的效率:将制造一台 T 型车的时间从 728 分钟缩短至 93 分钟
  • 大规模流水线的组装方式将复杂的工作分解为简单重复劳动,将待组装的车辆通过流水线的方式流转,大大提升了生产效率,并且将一台车的销价从 700 美元降低至 350 美元
  • 上世纪 70 年代,得益于计算机技术的应用,汽车工厂开始出现了自动控制的机械手臂,将工人从重复而繁重的体力劳动中解放出来

流水线驱动 DevOps

  • DevOps 把软件生产和工业生产进行了类比,因为软件生产也需要解决软件研发越来越大型之后面临的相同的问题就是 标准化 以及 高效率
  • 在软件行业中,一条流水线就是一个或多个自动化任务,或人工任务组合起来的进行交付的一个工具。它可以把一个或多个任务或特定的任务特定的顺序运行起来达到交付软件
  • 常见任务有:持续开发、持续测试、持续集成、持续部署、持续监控等
  • 这些不同环节的人工和自动化任务,通过流水线可以让部署成为一个日常的低风险的工作来解决开发的和运维之间根本的、长期的冲突
  • 为什么需要流水线
    • CI、CD 无缝结合快速迭代,提升交付效率,适应市场需求频繁变化
    • 每个环节都有反馈,实现完整快速的反馈循环
    • 每个环节都可设置门禁,实现质量的层层保障
    • 开发、运维、测试人员协作参与,改善公司组织文化、提高员工的参与感

流水线流程

  • 下图为华为的流水线样例图

流水线助力持续交付高质量应用

  • 分层分级
    • 分层分级流水线,可通过子流水线-stage-job 实现多级灵活串并行调度
  • 快速调度
    • 纳管研发过程中编译构建、代码检查、部署等多种自动化任务
  • 质量管控
    • 设置自动化质量门禁,人工卡点,等待时间等控制任务

流水线的功能实现

  • 工作流编排
    • 可按需定制自动化工作流程,配置阶段内任务为串行或并行执行,满足用户一键 DevOps 持续交付场景
  • 自动触发流水线
    • 通过配置流水线触发器,可支持代码提交自动执行流水线
  • 流水线定时执行
    • 用户可按周或按日指定流水线定时自动执行,并将结果通知给指定的用户,实现人休息而版本级交付不休息
  • 支持多种任务
    • 纳管研发过程中编译构建、代码检查、部署、测试等多种自动化任务,此外还提供延迟执行、人工审核等流水线内置任务
  • 质量管控
    • 支持多重质量门禁,任务健康度统计等,呈现价值流中耗时长、错误率高的阻塞点,做质量守护的一道大闸
  • 其他
    • 自定义权限配置
    • 准确报错,异常提示联动在线帮助平台
    • 开发对接 jenkins 任务

关键特性 —— 工作流编排

  • 流水线由各阶段(Stage)组成,阶段内每个块是任务原子(Task)
  • 阶段支持串/并行、自动/手动等配置
  • 阶段分为 自定义阶段发布仓库 两种类型
  • 支持 10+ 种任务类型,根据业务需求自由组装流水线
  • 支持自由推拽、复制、编辑各阶段任务
  • 流水线上任务支持一键跳转编辑
  • 任务类型
    • 构建
    • 部署
    • 代码检查
    • 接口测试
    • 门禁
    • 子流水线
    • 延迟执行
    • 人工审核
    • 扩展类型
    • Jenkins task

关键特性 —— 流水线参数

  • 流水线参数传递至各任务,实现产物的价值流动
  • 流水线参数支持文本、主机组、枚举、自增长等四种参数类型
  • 流水线参数分为 静态参数动态参数
    • 静态参数值总等于预设值
    • 动态参数可被传参修改
  • 统一使用 ${xxx} 进行参数化配置
  • 例如下图,我们通过 ${releaseVersion} 动态的获取发布版本号

关键特性 —— 自动化质量门禁

  • 门禁支持关联代码检查服务,提供专业级的代码检查能力,使缺陷发现前移
  • 门禁支持关联接口测试服务,针对用例成功率进行看护
  • 任务执行成功统计以健康度形式可视化,便于识别价值流动阻塞点

关键特性 —— 自动触发流水线

  • 用户可以选择在云代码托管服务中指定仓库的分支作为触发器,当分支上有 push 请求时,会自动触发流水线执行
  • 代码一旦产生变更,可以自动进行流水线执行,让开发人员更集中/沉浸在代码编写工作中,编写完提交之后,无需等待流水线执行完成,可以同步去进行一些更有价值的工作,让流水线自动执行耗时的过程,研发效率和生产效率可以得到很大的提升

关键特性 —— 定时执行流水线

  • 计划功能提供流水线定时执行功能,支持每日定时执行、每周定时执行等多种模式
    • 每日定时模式允许选择每日多个时间点执行流水线
    • 每周定时执行模式只允许选择星期几,不能选择具体时间点
  • 比如在每天凌晨,可以自动将团队人员代码进行打包、验证

流水线实践

构建灵活的 CI/CD 流水线实践

  • 持续集成实践
    • 流水线配置代码检查服务,每天定时执行,保障代码质量
    • 用户提交代码后,自动触发流水线执行编译构建、代码检查等任务
  • 持续交付实践
    • 配置构建、代码检查、部署、测试等多种自动化任务,完成一键式出包、发布、上线、生产全流程
    • 流水线执行失败时,发送邮件及时知会到项目经理

通过 Jenkins 构建线上线下混合流水线

思考题

以下哪些是 DevCloud 流水线的特点()?

  • A. 流水线当中不能加入子流水线
  • B. 可设置自动触发流水线,定时执行流水线
  • C. 流水线执行过程中可以交由人工审核,审核通过后继续执行该流水线
  • D. 流水线执行过程中,如果未通过质量门禁,则会终止执行该流水线

答案:BCD

解析:

  • A. 流水线有分层分级的能力(通过流水线和子流水线的功能达到分层分级的调用)

最后,欢迎大家关注我的个人微信公众号 『小小猿若尘』,获取更多IT技术、干货知识、热点资讯。同时,我在公众号中分享了精心整理的一些视频资料(包括 Python全栈教程、AI教程、前端、数据库等),大家回复相应关键词即可获取网盘视频链接,感谢大家的关注😊

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。