浅析流水线执行效率优化

        随着DevOps工作的持续推进,CI/CD也开始落地。CI/CD Pipeline是软件开发过程中避免浪费的一种实践,展现了从代码提交、构建、部署、测试到发布的整个过程,为团队提供可视化和及时反馈。

        虽然Pipeline已开始广泛的应用,但其反模式有时也会对开发效能产生负面影响。其中Pipeline执行慢就是我们项目组目前遇到的一个问题。

1、问题原因

经分析,我们的项目Pipeline执行慢的原因主要为以下几点

  1. 流水线流程设置需优化,该并行的任务没有并行执行,等待的任务拉长了执行时间;
  2. 执行Pipeline的agent节点太少,或者性能不足,导致排队时间太长,效率太低,同时造成构建时长也不稳定
  3. 执行的任务太重,相同测试场景被不同的测试覆盖了很多次,比如同样的逻辑在不同测试中都测了一遍。此外流水线不稳定,相同的任务不同执行批次会出现执行时间差异大,Jenkins超时等问题;
  4. 没有合理利用缓存,比如每个任务里都要下载全部依赖,每次都会全量进行构建
  5. 在前端工程中,引入了比较多的第三方库,导致项目大,而每次修改,都不会去修改到这些库,构建却都要再打包这些库,浪费了不少时间。

2、问题影响

敏捷开发模式需要Pipeline快速反馈结果,受这一反模式制约,在特性开发过程中,经常出现开发人员改一行代码,等半天CI的情形,不但影响效率,更影响心情与开发的连续性

3、问题解决

针对上面的问题,我们解决办法大致梳理如下

  1. 检查Pipeline的设计是否合理,尽可能让任务并行,比如sonar扫描和构建并行执行,冒烟测试和接口测试并行执行等;
  2. 对代码的各种测试深入了解,让测试尽量正交,避免过多的重复;
  3. 检查代码中的依赖,合理利用好缓存;
  4. 检查执行构建的节点资源是否充足,能否在任务量大时做弹性伸缩,减少等待和执行时间
  5. 通过webpack 的插件 DllPlugin 和 DllReferencePlugin将前端引用的不常变动的第三方库都提取出来,下次build的时候不再构建这些库,缩短构建时间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值