从 1 杯咖啡到 1 首歌的时间,炎凰数据如何实现 Pipeline 执行提速 6 倍?

news2024/9/20 8:58:35

目录

痛点:工具链复杂、功能少、网不好,太 EMO!

解法:All in one,一个平台串联需求→开发→发布

代码、CI/CD 一站式服务

需求、Story、Bug 一站式管理

关联代码

案例:3 个具体使用场景见真章

1. 灵活自定义 Pipeline:从买杯咖啡到听首歌,Pipeline 执行时长缩短 6 倍

2. 作业依赖:Upstream 和 Downstream 实现动态标签分配机制与测试结果统一概览

3. 灵活可变的脚本配置:让 CI/CD 执行更贴合实际需求

火花:炎凰数据+极狐GitLab,实现研发数据实时可视化展示和分析


近日,极狐GitLab 邀请新一代的异构大数据即时分析平台厂商——炎凰数据做客 TechTalk 直播间,炎凰数据技术副总裁路铭昊从痛点、解法、案例与共创 4 个模块出发,分享了初创公司在 DevOps 上的探索实践,揭秘 Case 数 10 倍增长、多产品线的情况下,如何实现 Pipeline 执行从 30 分钟到 5 分钟的提速经验

以下内容整理自本次直播,你也可以点击此处观看视频回放或下载PPT。Enjoy~

痛点:工具链复杂、功能少、网不好,太 EMO!

在我的工作经历中,无论是大公司还是初创公司,在研发工具链上都面临一些痛点。

大公司业务复杂,不同 BU 或者产品线对工具链的需求或者偏好不同,对应的生产工具种类繁多。例如之前在某家公司,需求管理用 Jira,测试用例用 TestLink,代码管理用 Bitbucket,代码检测用 FishEye,持续集成用 Jenkins、Bamboo 等,复杂工具链导致:

  • 学习成本高:仅仅从了解到能够熟练使用这些工具,就要花非常多的时间。根据之前的经验,在大公司里培养一个新人工程师发第一个 MR(PR)需要 4~8 周,可见整体学习周期之长;

  • 集成、运维复杂:打通各个系统需要花费更多时间和精力。举个例子,曾经我们在升级 CI/CD 工具版本时,为了让新版本与工具链上的其他工具相互适配,足足花了 3 个月时间才把整体链路打通。在复杂工具链中,一个版本升级带来的额外工作量是巨大的;

  • 效率低下:当时我们使用的测试用例工具每次都需要复制一个新的环境实例进行发布和测试。频繁复制新环境的方式,降低了团队的研发和测试效率,还增加了发布部署的风险

对于初创公司,通常一开始选择免费工具支持研发团队协同工作。随着团队规模扩大和产品复杂度的提升,功能不足以及协同效率低下的问题逐渐显现

另外,国外软件的网络问题也是普遍痛点。

解法:All in one,一个平台串联需求→开发→发布

以上痛点激发了我们对一站式研发平台的强烈需求。随着极狐GitLab 在国内落地,更贴合本土用户的产品功能和技术服务等优势,推动我们迅速迁移至极狐GitLab。

极狐GitLab 非常好的满足了炎凰数据的需求。经过了两年的应用,我们总结如下几个非常欣赏的亮点,分享给大家。

代码、CI/CD 一站式服务

极狐GitLab 一体化 DevOps 平台提供了从项目管理、源代码管理、CI/CD 等一站式服务,不需要在多个系统之间来回切换;也不用花费额外的时间去熟悉、维护和打通不同系统,可以高效投入到核心的产品开发工作中,这一点是我们非常看重的。

现在,代码提交 → 创建 MR → Code Review → CI/CD → 自动化测试 → 部署上线的链路十分顺畅,这是之前无法实现的。基于极狐GitLab,我们真正做到了快速开发、快速测试、快速部署

还有一个巨大的加分项:在极狐GitLab 中,整个研发流程可观测、可追溯。例如测试失败了,可通过极狐GitLab 追溯了解是哪一个测试用例组或具体测试用例失败:直接点击触发测试失败的测试作业,下钻到导致失败的具体测试用例,通过查看上下文来了解失败的原因。若发布失败,也能以同样的方式追溯原因。

需求、Story、Bug 一站式管理

  • 以 Issue 统一管理

在极狐GitLab 中,不仅做到了代码管理,还实现了 Issue 管理,把 Epic → User Story → Task 这条链路用 Issue 连接起来,实现一站式的需求管理。

  • 看板功能强大

极狐GitLab 提供看板功能去追踪每个 Story 的状态,包括初始化( Initialize)→ 设计中(Design)→ 开发中(Develop)→ 代码评审(Code Review)→ 测试(Test)→ 部署(Deploy)→ 完成(Done)整条链路。

同时还可以自定义创建标签对任务进行分类。比如创建“优先级”标签,根据优先级对 Issue 进行排序,在过滤栏里可以把优先级高的 Issue 过滤出来。

另外,极狐GitLab 的 Issue 有一个 Weight(权重)字段可以对 Story point 进行标记,方便需求的敏捷化管理。

关联代码

实时关联代码即 Issue、需求和代码在同一套系统里面,相互关联。比如我创建了一个 MR,该 MR 服务于某一个 Bug 或 Story,就可以把它们关联起来。在 Merge 之后,自动关闭 Bug 或 Story 或推送给相对应的测试人员进行测试。

图片

极狐GitLab 一体化 DevOps 平台提供的一站式服务,对于我们非常适用和受益,接下来通过几个具体案例来看极狐GitLab 如何助力我们的研发工作。

案例:3 个具体使用场景见真章

1. 灵活自定义 Pipeline:从买杯咖啡到听首歌,Pipeline 执行时长缩短 6 倍

炎凰数据成立初期,整体 Case 数量在 100 个左右,跑 Pipeline 的元素也比较简单,即部署环境 → 测试 → 回收环境这样一个标准的 CI/CD 流程。那时所有 Case 都用一个 Job 去运行,百来个 Case 跑完需要 30 分钟,大概出门喝杯咖啡的时间,可以接受。

图片

初期 100 个Case 左右,Pipeline 时间约 30 分钟

随着公司日益壮大,人员增加,产品功能需求增加,整体代码量提升,Case 数量也逐渐增多到几千个,此时一个 Job 就力不从心了,30 分钟变成 300 分钟,这个时间是无法接受的。此时,我们通过极狐GitLab 自定义 Pipeline 来解决。

因为极狐GitLab YAML 文件支持对不同的测试用例组进行配置,所以通过如下设置,我们实现了在 Case 数增加的情况下,总时长大幅缩短

  • 将关联性较弱的 Case,拆分成多个组并行运行;

  • 保留部分串行组,运行一些不希望被其他 Case 干扰的 Case。

图片

几百至上千个 Case,应用极狐GitLab Pipeline 时间仅 18 分钟

随着业务快速发展,不仅是 Case 数量增加,产品线也变多了,我们既有 ToB 炎凰数据平台,还推出了 ToC 的鸿鹄平台。

多了一个产品线怎么办呢?极狐GitLab 可以同时支持多个产品线,只需要在 YAML 文件中多定义一个部署环境,如下图所示,我们把每个产品线拆分成 6 个不同测试用例组并行运行,整体时间缩短了 6 倍,以前需要30分钟,现在仅需3~5分钟,大概听首歌的时间

图片

另外,还可以设置关键字按需运行,如按优先级运行 P0 级别的测试用例,或者全量回归测试。

2. 作业依赖:Upstream 和 Downstream 实现动态标签分配机制与测试结果统一概览

但前文的应用方式无法创建动态 Runner,好在极狐GitLab Upstream、Downstream 功能解决了这个问题。

在极狐GitLab 中,Upstream job 有一个运行测试步骤,在这里计算出哪些用例需要运行,需要多少台机器,随后把这些机器都创建出来,打上动态标签即可。通过 Upstream 和 Downstream 的联系,从 Upstream 把动态标签发给  Downstream ,Downstream 拿到这些动态标签之后,再去实际运行测试的 Runner 上进行绑定。换言之,所有的 Runner 标签都是动态创建出来的。

图片

运行完成后,Downstream 的结果如何返回到 Upstream 呢?极狐GitLab 也提供了简便的方法——自定义作业依赖,可以在 YAML 文件中添加一段自定义代码,把 Downstream 运行完成的 Case 测试结果全部收集汇总,发回到 Upstream。这样就不需要到每一个 Downstream job 中去查看结果,而可以在 Upstream job 中查看所有测试结果汇总,这给研发人员带来了极大的便利。

图片

另外,极狐GitLab 还可以根据合并请求中的代码改动,动态选择需要运行的测试用例组(如并行、顺序运行或全局运行),节省资源成本。

图片

3. 灵活可变的脚本配置:让 CI/CD 执行更贴合实际需求

  • 根据 Code diff 来计算需要跑的 Case

无论是测试人员还是研发人员,通常只希望运行修改过的 Case,而不是每次都运行全量回归。极狐GitLab 灵活可变的脚本配置,支持根据 MR 中的代码差异来计算需要运行的 Case,进而节省时间和资源。

图片

  • run_full_test:创建 MR 时可通过自带关键字告知 CI 如何跑 case

如需要运行全量测试用例,可以在 MR 的 Commit message 里带一个自定义的关键字,只要脚本里面能够去识别就可以,非常灵活。如下图我们用“ run all test”:

图片

  • 灵活定义已部署环境的生命周期及回收机制

炎凰数据每天运行 CI job,通常能够自动回收。但存在一些极端情况,比如 Job 卡死、Debug 忘记回收、网络问题或者其他故障导致没有运行到回收的流程,那么这个环境就变成一个“孤儿”存在在系统里了。但我们不希望资源被浪费,因此利用极狐GitLab 时间表功能,创建了两个时间表:

  1. 每 3 个小时去清理一遍所有已部署环境;

  2. 每天23:00 清理环境,为 00:00 时运行产品的完整功能版本测试,预备充足的资源。

图片

火花:炎凰数据+极狐GitLab,实现研发数据实时可视化展示和分析

如前文所说,我们每晚零点会进行产品完整功能版本测试。之前,每天的测试结果在次日早上以 Email 方式发送,存在不直观、有延迟、无法定向筛选和灵活数据对比等缺点。

炎凰数据本身是异构大数据即时分析平台,极狐GitLab 拥有强大的 API ,我们将炎凰数据强大的数据分析能力与极狐GitLab 相结合,实现了研发数据的实时可视化展示和分析,通过挖掘数据价值,增强对研发效能的观察和研究,赋能研发工作。

图片

以上是炎凰数据与极狐GitLab 摩擦出的一些火花,我们将持续探索基于极狐GitLab 的精英研发效能。欢迎了解炎凰数据+极狐GitLab 的更多故事

🌟 炎凰数据

上海炎凰数据科技有限公司是一家拥有自主知识产权,专注于异构大数据分析平台的初创公司,提供从数据导入、存储、查询分析、告警和仪表板等一系列服务的新一代异构大数据即时分析平台,帮助客户更快的从海量数据中定位问题以及提供解决方案,从而更好的完成在这个新的信息化时代下的数字化转型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/888693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MYSQL完全卸载、安装与账号创建、权限控制

一、卸载mysql CentOS 卸载 MySQL 1. 查看安装情况 使用以下命令查看当前安装mysql情况,查找以前是否装有mysql rpm -qa|grep -i mysql这里显示我安装的 MySQL 服务有有: 2. 停止 mysql 服务、删除之前安装的 mysql 删除命令:rpm -e –n…

聚焦纺织行业断线检测,AI机器视觉助力小场景的大未来

随着人工智能技术的发展,机器视觉以其快速、准确、高效的信息采集和处理优势,逐渐成为制造企业现代化升级不可缺少的技术之一,持续赋能相关传统劳动密集型产业的自动化与智能化转型。 传统劳动密集型产业对于人工依赖程度高,供应…

【IDEA报错:Cause: java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在】

报错内容如下: 2023-08-17 11:17:16.274 ERROR [egrant-biz,e44d96001eb5f212,e44d96001eb5f212,true] 29700 --- [ XNIO-1 task-2] c.i.c.l.c.RestExceptionController : 服务器异常org.springframework.jdbc.BadSqlGrammarException: ### Error queryin…

【计组】校验码(奇偶校验码、海明校验码、CRC)

前言 1、小提示:本篇博文是参考王道,在复习 ASCII 码的基础上,总结校验码的相关学习知识点,并在最后搭配习题(含408真题)进行巩固练习。(对重点内容进行划线、标色) 2、适用人群&…

前端笔试+面试分享

以下是个人线下面试遇到的真实的题,仅供参考和学习 1. css 选择符有哪些?哪些属性可以继承?优先级算法加何计算? CSS选择符有很多种,例如类型选择器、类选择器、ID选择器、属性选择器、伪类选择器、伪元素选择器等。 …

linux tomcat server.xml 项目访问路径变更不生效

如果想改成默认的127.0.0.1:8080 访问项目 先确定更改的作用文件 server.xml 的 host:appBase 标签 默认找到appBase webapps 下的war包,并解压,解压后的appname为访问路径 也就变成了 127.0.0.1:8080/appname host:Context:path 标签 appBase的 优先…

深度学习技巧应用25-深度学习在的常见问题与使用技巧,让大家更容易理解深度学习,通过面试

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用25-深度学习在的常见问题与使用技巧,让大家更容易理解深度学习。在面对AI领域公司面试的过程中,往往面试官会针对AI领域或者算法实践进行提问,这些问题可能大家知…

laravel-admin之 解决上传图片不显示 $form->image(‘image‘); 及 $grid->column(‘image‘);

参考 https://blog.csdn.net/u013164285/article/details/106017464 $grid->column(‘image’)->image(‘http://wuyan.cn’, 100, 100); // //设置服务器和宽高 图片上传的域名 上传的图片不显示 在 这里设置了图片的上传路径 在这里设置 域名 就可以回显图片

如何用思维导图+Markdown提升工作效率?

在日常的工作中,我们常常需要记录一些信息、重要的事情或者一些重要的想法,Markdown就是一种非常好用的记录工具。搭配思维导图可以提高我们的记录效率,让我们的记录更加结构化。 为什么使用思维导图? 思维导图可以帮助我们整理…

你敢信?代码小白30min就能搭建一套酷炫级的驾驶舱!

大量研究结果表明,人类通过图像获取信息的速度比通过阅读文字获取信息的速度要快很多。 近几年,数据可视化在企业中越发“流行”,将数字以可视化的形式展示,不仅清晰明了地展现企业真正的实力,也能让管理者快速了解细节…

问道管理:股票打板风险大吗?怎么降低打板风险?

在股票市场上,一些出资者喜爱低吸,一些喜爱打板,那么,股票打板危险大吗?怎么下降打板危险?下面问道管理为大家准备了相关内容,以供参阅。 股票打板通常是指在个股涨停时买入,这种买入…

ssm社区管理与服务系统源码和论文

ssm社区管理与服务的设计与实现031 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 研究背景 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的…

【C++】一文带你初识C++继承

食用指南:本文在有C基础的情况下食用更佳 🍀本文前置知识: C类 ♈️今日夜电波:napori—Vaundy 1:21 ━━━━━━️💟──────── 3:23 …

【学习笔记之java】使用RestTemplate调用第三方接口

1.首先需要导入依赖 <!-- RestTemplate使用导入的依赖--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency>2.跟启动类同级创建…

Java【Spring】Bean 的作用域和生命周期

文章目录 前言前言一、关于 Bean 的作用域问题引入二、Bean 的作用域1, 什么是 Bean 的作用域2, Bean 的六种作用域3, 设置 Bean 的作用域(解决开篇的问题) 三、Bean 的生命周期总结 前言 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4…

前端大屏常用的适配方案

假设我们正在开发一个可视化拖拽的搭建平台&#xff0c;可以拖拽生成工作台或可视化大屏&#xff0c;或者直接就是开发一个大屏&#xff0c;首先必须要考虑的一个问题就是页面如何适应屏幕&#xff0c;因为我们在搭建或开发时一般都会基于一个固定的宽高&#xff0c;但是实际的…

【K210】K210学习笔记一——sensor

【K210】K210学习笔记一——sensor 前言sensor的配置模块导入模块配置模块各配置解释 完整源码 前言 本人大四学生&#xff0c;电赛生涯已经走到尽头&#xff0c;一路上踩过不少坑&#xff0c;但运气也不错拿了两年省一&#xff0c;思来想去&#xff0c;决定开始写博客&#x…

基于Mysql+Vue+Django的协同过滤和内容推荐算法的智能音乐推荐系统——深度学习算法应用(含全部工程源码)+数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境MySQL环境VUE环境 模块实现1. 数据请求和储存2. 数据处理计算歌曲、歌手、用户相似度计算用户推荐集 3. 数据存储与后台4. 数据展示 系统测试工程源代码下载其它资料下载 前言 本项目以丰富的网易云音乐数据为基…

To B和To C含义与区别

1 定义 ToB&#xff0c;指的是公司的产品或服务所面向的用户是企业。ToC&#xff0c;指的是公司的产品或服务所面向的用户是广大个体用户。 2 用户群体 对ToB产品来说&#xff0c;面对的是客户&#xff08;Business&#xff09;&#xff0c;客户是各种企业&#xff0c;组织机构…

VS QT报错中文编码问题 error C2001:常量中有换行符

VS报错 VS中基于QT开发&#xff0c;在输入中文处显示报错&#xff0c;使用以下几种方法均无效&#xff1a; 中文处添加 QString::fromLocal8Bit("机器人")文件头部添加 #pragma execution_character_set("utf-8") 解决 在高级保存选项里选择该文件的编…