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 ...
随机推荐
- CSPS_101
T1 众所周知,只要在任意三个方向上有连续五颗棋子,游戏即结束. T2 又是最短路优化dp啦. T3 神奇的期望dp.还没改出来. 改出来啦!
- js判断是否微信浏览器、IE浏览器
/*判断(微信)浏览器*/ function isWeiXin(){var ua = window.navigator.userAgent.toLowerCase();if(ua.match(/Mic ...
- 学习 Git
Git 简介 Git是目前比较流行的分布式版本控制系统之一,能够记录文件的每次修改,还实现了多人并行开发; Git 组成 工作区(写东西之地) 暂存区 本地仓库(.git) 远程仓库(.repro) ...
- 1000m交叉网线最简单做法
1-3,2-6,3-1,4-7,5-8,6-2,7-4,8-5 1,2,3,4,5,6,7,8即为网线内部8跟线编号,两头颜色和数字要对应.
- ARP通信
ARP:地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议 简单介绍ARP通信过程: 1.发送端在与接收端进行数据通信转发时的过程: 发送端与接收端进行数据通信之前,需要先知道对端的MAC ...
- awk 实用案例介绍
awk 简介 • awk是 3 个姓氏的首字母,代表该语言的 3 个作者 • awk的版本有很多,包括: 旧版 awk,新版 awk(nawk), GNUawk(gawk)等 • awk程序有 awk ...
- linux系统LAMP环境部署
一.安装虚拟机 二.安装CentOS7 注意:以下安装,用的root权限. 三.安装Apache 1.安装 yum -y install httpd 2.开启apache服务 systemctl st ...
- Java基础:数值类型转换、强制类型转换
数值类型之间的转换 数值类型之间的转换,在小数值往大数值转换时,不会发生精度的损失.在小数值往大数值转换时有可能发生精度的损失. 比如byte最大值也只有127,如果一个大于127的int类型数据往b ...
- 关于html与css的标签及属性(text文本属性、背景background属性、表格标签table、列表、)
text文本属性1.颜色 colorcolor:red: 2.文本缩进text-indant属性值 num+px text-indant:10px:3.文本修饰 text-decoration属性值: ...
- css3布局-圣杯布局
圣杯布局he双飞翼布局都是解决两边固定款中间自适应的三栏布局 圣杯布局为了中间div内容不被别的内容覆盖,将中间div设置了左右的内边距后,将左右两个div用相对布局position: relativ ...