使用 Conan 和 Artifactory 减少导航设备的多架构构建时间

Conan

  +  

TomTom

Maikel van den Hurk 是 TomTom 的首席软件工程师,负责公司导航软件堆栈的开发者体验。代表着拥有超过 4500 名员工的组织中最大的产品部门,Maikel 必须设计能够让开发者轻松地在以 C++ 为主的环境中构建其软件的系统。

TomTom 的应用程序应用范围广泛;相同的软件堆栈面向许多不同的平台,从嵌入式软件到 Web 应用程序。“这使得我们在运营的领域中进行的练习颇具挑战性,”Maikel 说。

在为自动驾驶创建定位技术、为顶级汽车品牌提供导航软件等方面,Maikel 对“我们试图让每个人都能够在世界范围内导航和找到路径”感到兴奋。


挑战

TomTom 导航的开发者通过一个单一的 C++ 软件堆栈支持其广泛的产品,该堆栈必须明确配置和构建才能在每个目标平台上运行。每个开发者都必须从该堆栈编译——通常是每天——才能引入新功能或修复客户报告的错误,其中一些错误仅适用于特定的目标硬件。

TomTom 开发人员已创建了自己的基于 Ivy 的专有解决方案来管理这些变体,但发现它无法满足其不断增长的管理和跟踪构建上下文的需要。

缺乏这些功能迫使 TomTom 的开发者对每次更改(无论大小)都通过 CMake 执行完全重建。“编译时间过长,实际上使得开发人员无法在最短的时间内为我们的产品提供任何价值。”Maikel 回忆道。此要求还减缓了 Jenkins CI 构建,使其无法维持持续交付周期。


成果

TomTom 团队有机会了解 Conan 的内部运作,这使他们能够为其余的 C++ 社区贡献扩展。一旦 TomTom 导航团队将 Conan 用于 C++,他们就可以使用包管理器的设置系统更好地针对其众多目标平台环境构建其构建。使用包 ID 和其他 Conan 设置功能,可以创建和管理开发人员和交付经理都可以共享的二进制文件。

“所有设置和选项的灵活性为我们开启了一个全新的世界,”Maikel 说。“这是真正让我们取得突破的关键因素。”

Conan 使 Maikel 的导航产品部门能够从单一存储库现代化为多存储库方法,并使用“可以快速迭代的良好隔离的包”。开发人员现在可以快速重建自己的组件,同时通过 Artifactory 获取编译后的二进制文件作为依赖项。

随着向 Artifactory 支持的以二进制文件为中心的方法的转变,Maikel 很快看到了通过 Jenkin 加速的 CI 构建。“在这方面,交付周期实际上也在缩短,”他指出。“我认为,这是我们采用 Conan 取得的关键成果之一。”

“我们开始意识到,我们可以通过生成可以在开发人员之间共享的二进制工件来加快我们的开发链——我们实际上可以缩短构建时间,因为它们不需要重新构建。”

- Maikel van den Hurk,TomTom 首席软件工程师

Conan 是一款免费的开源工具, 立即开始使用 Conan。如果 C++ 是您组织中使用的众多语言之一,Artifactory 可以帮助您在一个解决方案中管理所有包。 立即免费开始使用 Artifactory

关于 TomTom

在 TomTom,我们是地图制作商,为驾驶员、汽车制造商、企业和开发人员提供地理位置技术。

我们高精度的地图、导航软件、实时交通信息和 API 支持全球范围内的智能出行,使道路更安全、驾驶更轻松、空气更清洁。

TomTom 总部位于阿姆斯特丹,在全球设有办事处,其技术受到全球数亿驾驶员、企业和政府的信赖。

行业

定位技术
消费电子

问题
  • 单体软件堆栈
  • 需要支持多个平台
  • 管理平台变体的能力有限
  • 构建时间过长
  • 无法跟踪构建上下文
  • 开发人员生产力低下
  • 无法维持持续交付周期
成果
  • 现代化支持多个存储库
  • 通过属性管理许多平台变体
  • 能够在团队之间共享二进制文件
  • 缩短构建时间
  • 提高开发人员生产力
  • 加快持续交付的发布时间
解决方案

Conan
Artifactory