近日,极狐 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 时间表性能,创立了两个时间表:
- 每 3 个小时去清理一遍所有已部署环境;
- 每天 23:00 清理环境,为 00:00 时运行产品的残缺性能版本测试,准备短缺的资源。
火花:炎凰数据 + 极狐 GitLab,实现研发数据实时可视化展现和剖析
如前文所说,咱们每晚零点会进行产品残缺性能版本测试。之前,每天的测试后果在次日早上以 Email 形式发送,存在 不直观、有提早、无奈定向筛选和灵便数据比照等毛病。
炎凰数据自身是异构大数据即时剖析平台,极狐 GitLab 领有弱小的 API,咱们将炎凰数据弱小的数据分析能力与极狐 GitLab 相结合,实现了研发数据的实时可视化展现和剖析,通过开掘数据价值,加强对研发效力的察看和钻研,赋能研发工作。
以上是炎凰数据与极狐 GitLab 摩擦出的一些火花,咱们将继续摸索基于极狐 GitLab 的精英研发效力。欢送理解炎凰数据 + 极狐 GitLab 的更多故事。
🌟 炎凰数据
上海炎凰数据科技有限公司是一家领有自主知识产权,专一于异构大数据分析平台的初创公司,提供从数据导入、存储、查问剖析、告警和仪表板等一系列服务的新一代异构大数据即时剖析平台,帮忙客户更快的从海量数据中定位问题以及提供解决方案,从而更好的实现在这个新的信息化时代下的数字化转型。