1. 座舱软件CI/CD现状与痛点

大家好,我是老张。在座舱领域摸爬滚打了十几年,今天想跟大家聊聊一个绕不开的话题——持续集成。说白了,就是怎么让我们的座舱软件交付得更快、更稳。

你可能会问:现在不是已经在用Git、Jenkins了吗?为什么还要专门讲这个?嗯,这里面的门道,还真不少。

1.1 传统座舱开发流程:一个真实的“慢动作”

先说说传统流程。我2015年参与过一个量产项目,那会儿的流程大概是这样的:

  1. 需求分析:产品经理写PRD,评审,改,再评审……
  2. 架构设计:架构师画框图,评审,改,再评审……
  3. 模块开发:每个工程师领自己的任务,埋头写代码。
  4. 单元测试:写完代码,自己测一测,能跑就行。
  5. 手工集成:每周五下午,大家把代码合并到一起。
  6. 集成测试:测试团队拿到集成版本,开始手工点点点。
  7. 系统测试:整车测试,发现bug,打回,修复,再集成……
  8. 发布:终于可以发布了,但往往已经延期了。

你想想看,这个流程里最慢的是哪一步?

核心痛点:手工集成是最大的瓶颈。 我见过一个项目,集成阶段占了整个开发周期的40%以上。

1.2 手工集成的五大痛点

我在好几个项目里都踩过这些坑,一个一个说。

痛点一:集成冲突,谁改的谁负责?

我记得有一次,A工程师改了HMI的布局,B工程师改了底层通信协议。两人各自开发了两个月,一合并——完蛋,界面卡死了。为什么?因为A的布局依赖了B的某个接口,但B把接口改了。这种问题,手工集成时几乎每周都会遇到。

  • 冲突发现晚:代码合并时才发现,但已经过去好几周了。
  • 责任不清:谁改的?谁该修?扯皮半天。
  • 修复成本高:改一个接口,可能影响十几个模块。

痛点二:回归测试,测一次要三天

手工测试座舱功能,你知道有多慢吗?一个典型的座舱系统,包含导航、音乐、电话、设置、车辆控制等十几个模块。每个模块又有几十个功能点。测试团队手工点一遍,至少需要两天。如果发现bug,修复后还要再测一遍。一个版本迭代,光测试就要一周。

我曾经见过一个项目:因为回归测试太慢,团队干脆不测了,直接发布。结果呢?OTA升级后,用户的车机黑屏了。紧急召回,损失惨重。

痛点三:环境不一致,开发环境能跑,集成环境就挂

这个我太有感触了。开发工程师在自己的电脑上跑得好好的,一提交到集成服务器,编译报错。为什么?因为开发环境是Ubuntu 18.04,集成环境是Ubuntu 20.04,库版本不一样。或者,开发用的模拟器,集成用的是真机,驱动不兼容。

环境类型 常见差异 后果
操作系统 Ubuntu 18.04 vs 20.04 库版本不兼容,编译失败
编译器 GCC 7 vs GCC 9 语法差异,链接错误
硬件平台 模拟器 vs 真机 驱动问题,性能差异
依赖服务 本地数据库 vs 集成数据库 数据不一致,功能异常

痛点四:反馈周期长,改一个bug要等一周

你想想看,开发工程师提交代码后,要等集成、测试、反馈,这一圈下来,少则三天,多则一周。等bug反馈回来,开发可能已经在做另一个功能了,上下文切换的成本极高。

为什么会这样?因为手工流程里,每个环节都是串行的。开发→集成→测试→修复→再集成→再测试……任何一个环节卡住,整个流程就停了。

痛点五:质量不可控,发布全靠“赌”

我记得2018年有个项目,发布前一周,测试团队发现了一个严重的内存泄漏。修复后,又引发了另一个bug。最后,项目经理拍板:先发布,后续OTA修复。结果呢?用户投诉率飙升,品牌口碑受损。

我的建议是:不要等到发布前才做质量检查。质量应该是“内建”的,而不是“检测”出来的。

1.3 为什么需要加速?三个不得不说的理由

你可能觉得,慢就慢点吧,反正项目总能交付。但现实是,市场不等人。

理由一:座舱功能复杂度爆炸式增长

十年前,座舱就是收音机+导航。现在呢?多屏互动、语音助手、手势控制、AR导航、车载微信、游戏……功能越来越多,代码量越来越大。一个中高端座舱项目,代码量轻松超过1000万行。手工集成?根本玩不转。

理由二:交付周期被压缩到极致

传统车企的车型开发周期是3-5年。现在呢?新势力车企把周期压缩到了18个月。座舱软件作为用户感知最强的部分,迭代速度更快。有些项目,每两周就要发布一个OTA版本。手工流程根本跟不上。

理由三:竞争压力倒逼效率提升

你想想看,如果竞争对手每个月都能推出新功能,而你还在手工集成、手工测试,你怎么跟人家竞争?这不是技术问题,这是生存问题。

一句话总结:座舱软件交付的瓶颈,不在开发,而在集成。加速集成,就是加速交付。

1.4 一张图看懂座舱CI/CD现状

下面这张图,是我根据多个项目经验总结的。它展示了传统座舱开发流程中,各个阶段的时间占比。

座舱软件传统开发流程时间占比 传统座舱开发流程时间占比 需求分析 10% 架构设计 10% 模块开发 25% 手工集成 15% 集成测试 20% 系统测试 15% 发布 5% 关键发现 • 手工集成+测试占比高达50% • 开发只占25%,但等待时间很长 • 反馈周期:从提交到反馈平均5天 • 缺陷修复成本:越晚发现越高 结论:加速集成是提升效率的关键

1.5 小结:痛点即机会

说了这么多痛点,不是为了抱怨。恰恰相反,我认为这些痛点就是我们的机会。

  • 手工集成慢?那就用自动化CI/CD来加速。
  • 回归测试慢?那就用自动化测试来替代。
  • 环境不一致?那就用容器化来统一。
  • 反馈周期长?那就用持续集成来缩短。
  • 质量不可控?那就用质量门禁来把关。

我个人习惯是:每到一个新项目,第一件事就是看他们的集成流程。如果还是手工的,我会建议团队立刻上CI/CD。别怕改变,改变带来的收益,远大于成本。