DevOps on DevCloud|如何采用流水线践行CI/CD理念【华为云技术分享】
【摘要】 持续集成/持续交付(CI/CD,Continuous Integration/Continuous Deployment)在DevOps CMALS理念中具有支柱性地位,因而CI/CD流水线至关重要,将实现应用程序的构建、测试、部署与发布等自动化,提升软件交付的效率与质量。
引言:在“DevOps能力之屋(Capabilities House of DevOps)”中,华为云DevCloud提出(工程方法+最佳实践+生态)×工具平台=DevOps能力。华为云DevCloud将推出“DevOps on DevCloud”系列,针对DevOps领域场景,阐述该场景在华为云DevCloud上的实施方法与实践。
在企业数字化转型的趋势下,市场分析机构Forrester将DevOps作为数字化企业架构的重要支柱之一,是企业数字化运营体验的关键使能因素。同时,DevOps逐渐演进为软件工程的思维框架,旨在融合人员、流程与工具快速持续地向用户交付软件价值。持续集成/持续交付(CI/CD,Continuous Integration/Continuous Deployment)在DevOps CMALS理念中具有支柱性地位,因而CI/CD流水线至关重要,将实现应用程序的构建、测试、部署与发布等自动化,提升软件交付的效率与质量。
一提到流水线(Pipeline),人们会第一时间想到亨利·福特与T型汽车。据说亨利·福特在仔细观察过屠宰场流水线后,意外得到灵感,于1913年开发出了世界上第一条汽车流水线。福特把T型车的装配过程拆成了84个不同的步骤,汽车在一条流水线上就可以完成组装,这个革命性的创造使汽车的装配时间从原先12小时减少至90分钟,而且一年一年各个环节操作时间都会在技术升级中不断缩短,20世纪20年代,福特工厂每24秒流水线就能制造一辆汽车。流水线带给汽车工业的是“规模化”,更是“流程革命”。

1924年福特公司将流水线生产方式引入日本。两年以后,丰田公司采用福特的流水线生产方式进行第一辆A1型轿车和第一辆G1型卡车试制工作。后来丰田发现福特的生产线是有问题的,因为生产线上的每个产品由不同的人来进行生产,直到最后检测才会发现质量有问题。因此,丰田更加强调“精益效率”,开始在流水线上落实“适时生产”与“实时监控生产品质”。丰田的安灯绳(Andon Cord)使得流水线上的每个工序一旦发生问题,可以停止流水线,警灯响起,技术人员和管理人员马上赶赴现场帮助解决问题。
让我们从福特、丰田的流水线故事重新回到软件持续交付流水线。从福特、丰田的故事中,对于流水线有2个最为主要的特征:工序编排、质量监控。对于软件交付来讲,从代码提交,将经过代码质量检查、构建、测试、部署、发布等环节交付给客户,在每个环节需要进行质量把控。因此持续交付流水线,需要对各个环节的任务进行并行或串行编排,并且在相关环节任务上通过门禁实现“安灯绳”机制。
华为云DevCloud提供可视化分层分级、并行/串行、选择执行等编排能力;可以纳管代码检查、编译构建、 部署、测试、子流水线等等多类型任务;提供代码、定时、人工等3种触发方式;提供代码质量、测试等多种质量门禁;提供人工卡点方式。
1 准备工作
在DevOps on DevCloud系列文章“代码检查服务如何降低Java应用 ‘Billion Dollar Mistake’NPE风险”与“如何实现应用接口的混合驱动测试”中,我们介绍了华为云DevCloud的代码检查与接口测试服务。我们将在此基础上,阐述流水线的特性能力。
2 代码检查纳入流水线
开发者可以访问华为云DevCloud并进入项目CodeCheckBenchmark。在“构建&发布”-“流水线”页面,点击“新建流水线”,将流水线名称设置为“pl-cicd-cc”。
在“新建流水线”页面,对于流水线阶段二,首先将名称由“构建”修改为“代码质量”;其次点击“添加任务”,在“任务配置”页面选择“类型”为代码检查,并选择任务“cc-Code4Benchmark”;最后在“质量门禁”添加门禁任务,(1)如果没有门禁,需要点击创建,将门禁名称为“代码问题数”,门禁项为“CodeCheck问题数”,门禁阈值为3;(2)在“任务配置页面”的门禁处,选择“代码问题数”。详细参考可以参考图2-图3标注红框的地方,完成操作后,保存流水线。

流水线创建完毕后,可以在“流水线详情”页面执行流水线。正常情况下,流水线会在阶段“代码质量”停止执行,提示门禁不通过。
3 接口测试纳入流水线
华为云DevCloud提供了门禁项“API测试通过率门禁”,此门禁的值按照测试套件中测试用例的通过率进行计算。因此在流水线中使用该门禁,需要使用测试套件来管理相应的接口测试用例。
首先,进入项目Prj4ApiHDT,在接口测试页面,通过复制manageProject用例,新增2个测试用例,分别为creatProject(保留createProject、deleteProject测试步骤,项目名称可以进行修改)、queryWorkItemList(保留queryWorkItemList测试步骤,在URL中将参数修改为“1234”等任意值)。新建测试套件tsProject,并将3个测试用例添加到本测试套件。
其次,参考“代码纳入流水线”,新建流水线pl-cici-api。在阶段二将“接口测试”类型的任务tsProject添加到流水线中,并添加质量门禁“API测试门禁”,其门禁项为“API测试通过率”,门禁阈值为100%。详细操作可以参考图4中的红框相关操作。

本文通过案例初步展示了华为云DevCloud流水线相关的编排以及门禁能力。在实际项目中,流水线一般来讲涉及到更多的环节(例如构建、部署等),因此编排以及门禁等将更为复杂,读者可以参考华为云DevCloud HE2E DevOps实践(https://support.huaweicloud.com/bestpractice-devcloud/devcloud_practice_20072.html)相关内容。
作者:伦语春秋
DevOps on DevCloud|如何采用流水线践行CI/CD理念【华为云技术分享】的更多相关文章
- 【华为敏捷/DevOps实践】7. 敏捷,DevOps,傻傻不分清楚【华为云技术分享】
文:姚冬(华为云DevCloud首席技术布道师,资深DevOps与精益/敏捷专家,金融解决方案技术Leader,中国DevOpsDays社区核心组织者) 前言 敏捷是什么?DevOps是什么?两者有什 ...
- “如何实现集中管理、灵活高效的CI/CD”在线研讨会精彩内容分享
"如何实现集中管理.灵活高效的CI/CD"在线研讨会精彩片段分享 片段主讲人:李培(西瓜刀) 大家好,我是李培.前面听文老师讲DevOps,包括CI/CD 的一些理论,也是挺有 ...
- 群晖下 gitea+drone+harbor实现CI/CD 发布到云服务器
常用命令 sudo -i然后输入密码登录root账户(群晖默认只能使用admin账号登陆) vim xxx编辑(编辑是进去之后按i,退出并保存是按esc,然后:wq!再回车) mkdir xx创建文件 ...
- 前端静态站点在阿里云自建 K8S DevOps 集群上优雅的进行 CI/CD
目录 网站 域名 K8S DevOps 集群 私有 Gitlab 使用 Docker 编译站点 * Dockerfile * 构建编译 Image * 测试编译 Image * 推送镜像到 Aliyu ...
- Go-Zero 短链项目 DevOps 实战,利用 Drone CI/CD 打通上云(Kubernetes)迭代流程
Go-Zero 官方短链项目教程:快速构建高并发微服务 关于 go-zero,大家可以看文档.为少认为它是中国目前最好用的 golang 微服务框架. 完整的 Go-Zero ShortUrl Dev ...
- 【漫话DevOps】Agile,CI/CD,DevOps
随着DevOps理念的普及与扩散,可能会被一大堆名字概念搞的莫名其妙,理清它们之间的关系可以帮助团队知道DevOps如何落地,改善工作流程. Here's a quick and easy way t ...
- CI Weekly #1 | 这份周刊,带你了解 CI/CD 、DevOps、自动化测试
原文首次发布与 flow.ci Blog >> 链接,转载请联系:) 准备了很久,CI Weekly 第一期终于来了. CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分 ...
- 深入了解CI/CD:工具、方法、环境、基础架构的全面指南
本文来自Rancher Labs 持续集成和持续交付(CI/CD)是DevOps背后的助推力之一.如果你的企业正在考虑使用DevOps,那么CI/CD绝对是需要考虑的其中一部分.但是CI/CD到底意味 ...
- 如何搭建安全的 CI/CD 管道?
Eolink 前端负责人黎芷君进行了<工程化- CI / CD>的主题演讲,围绕 CI/CD 管道安全的实践,分享自己在搭建 CI/CD 管道过程中所总结的重要经验,与开发者深入讨论 &q ...
随机推荐
- Mybatis自定义TypeHandler解决特殊类型转换问题
我们知道,Java和MySQL中的数据类型是不同的,Java中除了基本数据类型,还有对象. 有时候使用MySQL存储数据,或者从MySQL中读取数据时,会有一些特殊需求
- MySQL 执行计划详解
我们经常使用 MySQL 的执行计划来查看 SQL 语句的执行效率,接下来分析执行计划的各个显示内容. EXPLAIN SELECT * FROM users WHERE id IN (SELECT ...
- jquery序列帧播放(支持视频自动播放和不是全屏播放)
jquery序列帧播放 这个弊端就是到时候需要升级下带宽 至少10MB 保证不卡.. ae导出序列真的时候 每秒10帧 就是代码每秒播放10张图片 尺寸适当的可以压小点<pre> < ...
- 前端Leader你应该知道的NPM包管理机制
npm install 命令 首先总结下npm 安装一个模块包的常用命令. /* 模块依赖会写入 dependencies 节点 */ npm install moduleName npm insta ...
- js常用的array方法
1. splice() splice()方法向/从数组中添加/删除项目,然后返回被删除的项目.(注释:该方法会改变原始数组.) arrayObject.splice(index,howmany,i ...
- SpringBoot 源码解析 (五)----- Spring Boot的核心能力 - 自动配置源码解析
在上一篇博客中分析了springBoot启动流程,大体的轮廓只是冰山一角.今天就来看一下springBoot的亮点功能:自动化装配功能. 先从@SpringBootApplication开始.在启动流 ...
- 二、netcore跨平台之 Linux部署nginx代理webapi
上一章,我们讲了在linux上安装netcore环境,以及让netcore在linux上运行. 这一章我们开始讲在linux上配置nginx,以及让nginx反向代理我们的webapi. 什么ngin ...
- java编程思想第四版第十四章 类型信息习题
fda dfa 第三题u package net.mindview.typeinfo.test4; import java.util.ArrayList; import java.util.Array ...
- 二 linuk系统安装
一 VM虚拟机安装与使用 安装: VM官网:www.vmware.com 不需要太高版本 安装较为简单,选典型安装,别放c盘即可 使用 1.创建虚拟机时,把每个处理器的内核数量调高(我调为8),注意别 ...
- 无法优化的O(n!) 算法
旅行商问题: 有一位旅行商,他需要前往5个城市. 要前往这5个城市,同时要确保旅程最短. 对于每种顺序,他都计算总旅程,再挑选出旅程最短的路线.5个城市有120种不同的排列方式.因此,在涉及5个城市时 ...