C++ 项目的持续集成
为 C++ 项目设置 GitHub Actions 持续集成,并执行多平台构建
C++ 项目的持续集成 是 CoddyKit 上的免费 C++ Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C++ Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C++ Academy 课程共包含 4 节课。
为什么需要 CI?
持续集成会在每次提交时自动运行测试。它可以尽早发现破坏性变更,保证质量,并让人们不必手动检查。
GitHub Actions
这是开源项目中最流行的 CI 工具。可以在 .github/workflows/ 下的 YAML 文件中定义工作流。
# .github/workflows/build.yml
name: Build and Test
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Configure
run: cmake -B build
- name: Build
run: cmake --build build
- name: Test
run: ctest --test-dir build多平台构建
使用矩阵并行在 Linux、macOS 和 Windows 上运行。
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}多个编译器
使用多个编译器(GCC、Clang、MSVC)和标准(C++17、C++20)进行测试——矩阵构建可以发现可移植性问题。
运行时检测器构建
添加一个使用 AddressSanitizer 和 ThreadSanitizer 构建的任务。测试运行速度会变慢,但可以捕获真实错误。
缓存依赖项
缓存构建产物和依赖项安装结果,以加快 CI 运行速度。
- uses: actions/cache@v4
with:
path: build/_deps
key: ${{ runner.os }}-deps-${{ hashFiles('CMakeLists.txt') }}代码覆盖率
使用 --coverage(gcc)或 -fprofile-instr-generate -fcoverage-mapping(clang)构建。上传到 Codecov 或 Coveralls,以跟踪趋势。
CI 中的静态分析
在每个 PR 上运行 clang-tidy 和 cppcheck。对于新增警告,让构建失败。
强制执行代码格式
使用带有项目级 .clang-format 的 clang-format。CI 会拒绝格式不符合要求的代码。
- name: Check format
run: clang-format --dry-run --Werror src/*.cppGitLab CI
对于自托管设置,GitLab CI 的功能类似。使用阶段和任务定义 .gitlab-ci.yml。
Jenkins、CircleCI、BuildKite
其他 CI 选项:
- Jenkins——自托管,灵活性很高
- CircleCI——云服务能力强,并集成 Docker
- BuildKite——混合模式(云控制平面,使用您自己的运行器)
发布与标签
在版本标签上触发打包和发布。为多个平台构建二进制文件,将其附加到 GitHub Releases,并推送到包管理器。
on:
push:
tags: ['v*']CI 最佳实践
通过缓存、并行执行和拆分构建,将 CI 运行时间控制在较短范围内(低于 10 分钟)。让失败信息具有可操作性——提供清晰的错误信息和指向日志的直接链接。
快速检查
哪个 CI 功能可以让您并行使用多个编译器和操作系统进行测试?
回顾
为每个项目设置 CI:使用 GitHub Actions、GitLab 或自托管方案。跨编译器和操作系统进行矩阵构建。在每个 PR 上运行测试、运行时检测器、静态分析和格式检查。积极缓存,快速失败,并在标签上发布版本。
常见问题解答
「C++ 项目的持续集成」课时是免费的吗?
是的 — 「C++ 项目的持续集成」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C++ Academy 课程的其余内容,请升级到 CoddyKit PRO。 C++ Academy 课程共包含 4 节课。
「C++ 项目的持续集成」这节课中我会学到什么?
为 C++ 项目设置 GitHub Actions 持续集成,并执行多平台构建 你通过在浏览器中直接运行的动手代码来练习 C++ Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 C++ Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 C++ Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「C++ 项目的持续集成」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 C++ Academy 课中编写并运行代码吗?
能。每节 C++ Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。