MeterSphere集成云效DevOps

473 阅读7分钟

1. 持续测试,DevOps最后一公里

说起 DevOps,大部分人的第一反应或者说闯入脑海的就是CI/CD(Continuous Integration/Continuous Delivery,即持续集成和持续交付)。但是,要想构建能够支撑起数字化转型要求的软件研发能力,与之适配的软件测试能力必不可少。正如由“软件质量报道”公众号和MeterSphere项目组共同撰写的《持续测试白皮书》第一章中所说,“持续交付了催生持续测试,持续测试应该嵌入到持续交付中,作为流水线中的一环,让开发过程可随时且具有连续性的自动化测试流程”。从经典的持续交付莫比乌斯环中也可以理解出“持续测试应该作为一项测基础和持续的测试活动、贯穿于整个软件交付周期之中。”企业开展持续测试能够帮助企业尽快获得软件发布后业务风险的反馈。 image.png

由中国信息通信研究院牵头撰写的全球首个 DevOps 标准,即《研发运营一体化(DevOps)能力成熟度模型》中第3部分--持续交付章节中也阐明了,测试管理作为持续交付7大能力域之一。

image.png

参照《研发运营一体化(DevOps)能力成熟度模型》要求,软件行业先后引入了SCRUM敏捷研发模型、持续构建、持续部署、持续监控等一系列最佳实践。而不同于CI/CD工具集,比如GitLab或者GitHub成为代码库标准,Jenkins成为持续集成工具主流,而测试本身,在DevOps流程体系中并没有一个平台或者工具完成所有的测试类型,用户会采用不同的工具完成不同的测试类型。乃至同一种测试都采用了不同的工具,比如接口测试有采用PostMan、Jmeter、Pytest等。而不同的测试工具无法都很的嵌入到DevOps流程体系中,从而导致了测试速度,测试反馈等滞后问题。从而导致当下,相比于其他环节,测试领域无论从工具的集成、最佳实践等都已经成为企业落地敏捷及DevOps实施的最大瓶颈。

2. 阿里云效DevOps平台

阿里云效是云原生时代一站式BizDevOps平台。支持公共云、专有云和混合云多种部署形态。云效 DevOps 的 6 大优势:

  • DevOps工具链一步配齐,开箱即用
  • 一套账号、数据体系,打通所有系统
  • 简单易用,优秀实践经验模板化沉淀
  • 深度集成阿里云产品,云上DevOps工具首选
  • 多重企业级安全防控能力,安全可信
  • 云效公共云产品,基础版,不限人数,免费使用(本次实践demo采用阿里云云效公有云版本)

云效 DevOps 提供项目协作、代码管理、持续交付流水线、云原生应用交付、在线IDE、制品仓库、测试管理、知识库 、效能洞察9大产品。

image.png

详情连接见:www.aliyun.com/product/yun…

3. MeterSphere持续测试平台

MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、性能测试、 团队协作等功能,全面兼容 JMeter、Postman、Swagger 等开源、主流标准。具有四大功能模块:

  • 测试管理 :远超 TestLink 的使用体验,覆盖从编写用例到生成测试报告的完整流程;
  • 接口测试 :媲美 Postman 体验 ,接口管理、Mock、多协议支持、场景自动化,你想要的全都有。
  • 性能测试 :兼容 JMeter,支持 Kubernetes 和云环境,轻松支持高并发、分布式的性能测试。
  • 团队协作 :用户管理、租户管理、权限管理、资源管理,无论团队规模如何,总有适合的落地方式。

image.png

4. 为什么需要云效与MeterSphere集成

基于云效DevOps平台介绍,云效DevOps平台集成需求管理、代码管理、流水线、制品仓库、应用交付管理、测试管理等。但是在实际的使用中,在测试功能域中云效只包含了面向开发人员的单元测试和测试用例管理(可以给用例标记不同的测试类型,比如接口自动化,但是无实际作用),如下图所示,这点对应一些应用交付测试是远远不够的。

(流水线中的单元测试)

image.png

(测试计划中的测试用例)

image.png

所以为了更好的在DevOps环节中引入自动化测试,需要引入测试平台,能够将测试作为一项服务提供,而不仅仅是测试工具的使用。对企业而言无论产出比和对整体测试人员使用的友好度(并不是所有测试人员都可以基于python写接口自动化)上,MeterSphere在业内有着不错的口碑。所以MeterSphere和云效进行有效的集成,可以打通云效DevOps中测试最后的一个环节,实现1+1>2的效果。

5. 云效与MeterSphere如何集成

本次实操Demo重点依赖云效的流水线,实操环境采用了GitHub代码库,阿里云云效流水线,阿里云个人镜像仓库,本地Jenkins环境,一台本地虚拟机(用于自动化部署),MeterSphere平台,MeterSphere平台的Jenkins插件。本次模拟场景如下:

image.png

5.1 MeterSphere部署

MeterSphere官网提供了一键部署脚本:curl -sSL GitHub.com/metersphere… | sh

具体其他部署详见MeterSphere官网:metersphere.io/docs/quick_…

5.2 MeterSphere Jenkins插件部署

1.    GitHub上下载MeterSphere Jenkins插件 GitHub.com/metersphere…

2.    在 Jenkins 的插件管理页面,上传并安装下载好的 hpi 插件包

3.    插件安装后,在指定的 Jenkins 构建任务中,添加「MeterSphere」类型的构建步骤

image.png

  1. 根据图示配置,填写认证信息并选择需要触发执行的测试计划(本文测试计划名称为MeterSphere-demo-testplan)

image.png

5.3 云效DevOps平台具体配置步骤

1.    开通阿里云云效产品使用

image.png

2.    新建与配置流水

  • 新建流水线

image.png

  • 选择空白模板的流水线

image.png

  • 添加代码源:流水线中添加流水线GitHub代码仓库源(提示需要GitHub授权),选择GitHub的命名空间、仓库和分支

image.png

  • 添加构建:选镜像构建并推送至阿里云镜像仓库个人版,选择镜像仓库(需要提前在阿里云区域中开通镜像仓库),填写dockerfile路径(在GitHub代码库中需要包含dockerfile文件,详见GitHub样例),配置企业微信通知(需要提前创建企业微信助手的webhook)

image.png

image.png

  • docker部署:选择主机组(需要准备本地可以连接互联网一台主机,安装agent),编写部署脚本

image.png

  • 触发MeterSphere自动化测试:填写安装了MeterSphereJenkins插件的Jenkins Master信息,填写Job名称(本次实践名称为MeterSphere-demo-testplan) 备注:Jenkins实例全局安全设置中需关闭'防止跨站点请求伪造'选项,不然此部署会失败。 https://cloud.tencent.com/developer/article/1941884 (哈哈,腾讯云的社区贴)

image.png

  • 整体的流水线如下图所示:

image.png

5.4 GitHub配置

  • GitHub示例项目

image.png

image.png

  • 查看云效流水线中的webhook

image.png

  • GitHub代码库中配置webhook,Let me select individual events 选项中勾选Pull requests

image.png

image.png

6. 最终集成效果展示

编辑GitHub中index.heml中文件信息,然后commit changes提交。

image.png

自动触发云效流水线,云效流水线中已经显示正在运行。

image.png

点击流水线名称可以查看详细运行信息。

image.png

可以查看每个步骤执行情况。

image.png

image.png

image.png

同时企业微信已经收到相应的通知。

image.png

image.png

image.png

打开自动化部署系统页面,信息已经更新为代码修改的内容。

image.png

可以在MeterSphere平台中配置详细的测试结果企业微信通知。

image.png

点击企业微信的MeterSphere报告详情连接或者登陆MeterSphere平台,可以查看具体的报告内容。

image.png

7. 最后

结合云效和MeterSphere,企业可以快速补充 DevOps 流水线的最后一公里。当然此文章只是一个demo环境操作演示,并非正式的生产环境,供大家参考与思路参照。不同的企业可以结合自己的交付要求,将MeterSphere串入到交付流水线中。