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 很快看到了 Jenkins 通过 CI 构建是如何加速的。“在这方面,交付周期实际上也在缩短,”他指出。“我认为,这是我们采用 Conan 取得的关键成果之一。”
“我们开始发现,我们可以通过生成可在开发人员之间共享的二进制工件来加快开发流程——我们实际上可以缩短构建时间,因为它们不需要再次构建。”
- Maikel van den Hurk,TomTom 首席软件工程师
Conan 是一个免费的开源工具, 立即开始使用 Conan。如果 C++ 是您组织中使用的众多语言之一,Artifactory 可以帮助您在单个解决方案中管理所有包。 立即开始使用 Artifactory 免费体验。
关于 TomTom在 TomTom,我们是地图制作者,为驾驶员、汽车制造商、企业和开发人员提供地理定位技术。
我们高度准确的地图、导航软件、实时交通信息和 API 使全球范围内的智能移动成为可能,使道路更安全、驾驶更轻松、空气更清洁。
TomTom 的总部位于阿姆斯特丹,在全球设有办事处,其技术受到全球数亿驾驶员、企业和政府的信赖。
行业定位技术
消费电子产品
- 单一的软件堆栈
- 需要支持多个平台
- 管理平台差异的能力有限
- 构建时间过长
- 无法跟踪构建上下文
- 开发人员生产力低下
- 无法维持持续交付周期
- 为多个仓库现代化
- 通过属性管理许多平台差异
- 能够在团队之间共享二进制文件
- 缩短构建时间
- 提高开发人员生产力
- 加速持续交付的发布时间
Conan
Artifactory