Askia(Ipsos公司)通过vcpkg实现更快、更可重复的构建

Askia(Ipsos公司)通过vcpkg实现更快、更可重复的构建

💡 原文英文,约1600词,阅读约需6分钟。
📝

内容提要

vcpkg是免费开源的C/C++包管理器,由微软和C++社区维护。使用vcpkg和CMake,Askia公司能够减少构建依赖的时间,减少代码大小约30万行。转向vcpkg还能确保一致和可重复的构建,访问大量库,简化入职流程,并标准化微服务的使用。

🔎

延伸解读

从30人到90人:vcpkg如何支撑团队快速扩张

Askia被Ipsos收购后,团队在两年内从30人扩展到90人。为了应对快速扩张,他们需要简化新成员的入职流程。通过采用vcpkg和CMake,新开发者只需安装Visual Studio、ODBC驱动、克隆vcpkg并创建GitHub令牌,就能在半天内完成环境搭建,并克隆、编译和调试所有C++项目。这种标准化工具链显著降低了入职门槛,使团队能够高效扩展。

二进制缓存:节省CI时间与成本的关键

Askia利用vcpkg的二进制缓存功能,将GitHub作为NuGet服务器,实现开发者和CI共享缓存。每个构建要么下载缓存,要么构建并上传结果。他们管理着274个包,主要包每月下载300次。即使只节省一次OpenSSL或Python的编译,也能大幅减少CI构建时间和成本。团队对此表示高度赞赏,这直接提升了开发效率。

代码精简30万行:消除冗余依赖管理

在迁移到vcpkg和CMake之前,Askia的旧代码库使用多种依赖管理方式,包括源码包含、修改后源码、NuGet包和预编译二进制,导致难以追踪版本。引入CMake和vcpkg后,主代码库减少了约10%的代码量,即30万行,这些主要是项目文件、脚本和复制的依赖。这不仅简化了构建过程,还提高了代码的可维护性。

跨平台一致性:Windows开发,Linux生产

Askia的开发环境基于Windows,使用MSVC和GCC13编译器,而生产环境是Ubuntu 22.04 Docker容器。通过vcpkg和CMake,他们确保了跨平台的一致性和可重复性构建。所有代码兼容Windows,并能在两个平台间交换服务。Docker容器分为基础镜像、开发层、静态分析层和生产层,开发者和CI使用相同镜像,进一步保证了环境一致性。

❓

Q&A

vcpkg是什么,它的主要功能是什么?

vcpkg是由微软和C++社区维护的免费开源C/C++包管理器,支持Windows、macOS和Linux,主要用于管理依赖和简化构建过程。

Askia公司使用vcpkg后有哪些具体的改进?

Askia通过使用vcpkg和CMake,减少了构建依赖的时间,代码量减少约30万行,并确保了一致和可重复的构建。

使用vcpkg对开发团队的入职流程有什么影响?

使用vcpkg显著改善了入职流程,帮助团队在短时间内扩展规模,简化了新开发者的上手步骤。

Askia在转向vcpkg之前是如何管理C++依赖的?

在转向vcpkg之前,Askia使用多种方法管理依赖,包括源代码、公共NuGet包和预编译二进制文件,管理过程复杂且难以追踪版本。

vcpkg如何帮助Askia公司节省构建时间和成本?

vcpkg的二进制缓存功能减少了CI构建时间和成本,团队对节省编译时间表示赞赏。

Askia公司的开发环境是怎样的?

Askia的开发环境使用Visual Studio 2022,采用MSVC和GCC13编译器,所有项目使用CMake和vcpkg构建,并在Docker容器中运行。

🏷️

标签

➡️

继续阅读