C++项目的CI/CD:配置GitHub Actions

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

C++ 项目的 CI/CD:GitHub Actions 完整配置指南



在现代软件开发中,构建、测试和部署流程的自动化已不仅是一种便利,更是必需品。对于通常具有复杂构建系统和依赖关系的 C++ 项目而言,实施 CI/CD(持续集成/持续部署)尤为重要。本文将详细介绍如何使用 GitHub Actions(一个强大且内置的自动化工具)为 C++ 项目设置 CI/CD 管道。



什么是 GitHub Actions?为何它适合 C++ 项目?



GitHub Actions 是一个工作流自动化平台,允许您直接在 GitHub 仓库中创建 CI/CD 管道。对于 C++ 开发者来说,它因以下原因成为理想选择:



  • 公共仓库免费构建时长
  • 支持 Linux、macOS 和 Windows — 可测试跨平台构建
  • 通过 YAML 文件灵活配置
  • 庞大的现成操作生态系统,用于安装编译器、依赖项和工具


主要元素是 工作流,它定义在文件 .github/workflows/*.yml 中。每个工作流包含一个或多个在虚拟机(Runner)上运行的 作业。



设置基础管道:构建与测试



让我们从最简单的开始 — 创建一个工作流,每次将更改推送到 main 分支或创建拉取请求时,它都会使用 CMake 构建您的 C++ 项目并运行测试。



在仓库根目录下创建文件 .github/workflows/build.yml,并添加以下代码:



name: C++ CI Build

on: push: branches: [ "main" ] pull_request: branches: [ "main" ]

jobs: build: runs-on: ubuntu-latest

steps: - name: Checkout repository uses: actions/checkout@v4

- name: Install dependencies run: | sudo apt-get update sudo apt-get install -y cmake g++ libgtest-dev

- name: Configure CMake run: cmake -B build -DCMAKE_BUILD_TYPE=Release

- name: Build run: cmake --build build --config Release

- name: Run tests working-directory: ./build run: ctest --output-on-failure


让我们逐步分解这段代码:

  • name — 将在 GitHub 界面中显示的工作流名称
  • on — 触发工作流的事件(推送到 main 和针对 main 的拉取请求)
  • runs-on — Runner 的操作系统(ubuntu-latest、windows-latest、macos-latest)
  • actions/checkout — 克隆仓库的标准操作
  • Install dependencies — 安装 CMake、GCC 编译器和用于单元测试的 Google Test 库
  • Configure, Build, Run tests — 用于构建和运行测试的标准 CMake 命令


优化:缓存与矩阵构建



基础管道可以工作,但可以进行显著改进。两个关键技术是 依赖缓存 和 矩阵构建。



使用缓存加速构建

每次运行工作流时,Runner 都会从头下载所有依赖项。这很耗时。使用 actions/cache 保存 CMake 缓存和已安装的包:



    - name: Cache CMake build      uses: actions/cache@v3      with:        path: |          build          /usr/l

博客

书籍推荐