使用GitHub Actions可实现C++项目CI/CD自动化,推送代码后自动构建、测试、生成覆盖率报告并部署发布。配置.github/workflows下的YAML文件定义流程,支持多编译器(GCC/Clang)与多平台矩阵构建,通过ctest运行单元测试,结合lcov生成覆盖报告,利用codecov上传结果;CI通过后可打包产物,打tag时自动创建GitHub Release,实现从提交到发布的全流程自动化,提升开发效率与代码质量。

在C++项目中使用GitHub Actions实现CI/CD,可以自动化完成代码构建、单元测试和部署流程,提升开发效率与代码质量。整个过程无需本地反复操作,只要推送代码,就能自动验证是否通过编译和测试。
GitHub Actions通过.github/workflows目录下的YAML文件定义自动化流程。新建一个YAML文件(如ci-cd.yml),即可定义C++项目的CI/CD步骤。
基础结构如下:
name: C++ CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
<pre class="brush:php;toolbar:false;"> - name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install g++ cmake make
- name: Configure with CMake
run: cmake -B build
- name: Build project
run: cmake --build build
- name: Run tests
run: |
cd build
ctest --output-on-failure立即学习“C++免费学习笔记(深入)”;
C++项目常需在不同编译器(如GCC、Clang)或操作系统(Linux、Windows、macOS)下验证兼容性。GitHub Actions支持矩阵构建(matrix strategy),可一次性测试多种环境。
示例:使用GCC和Clang在Ubuntu上构建
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
compiler: [gcc, clang]
env:
CC: ${{ matrix.compiler == 'gcc' && 'gcc' || 'clang' }}
CXX: ${{ matrix.compiler == 'gcc' && 'g++' || 'clang++' }}
steps:
- uses: actions/checkout@v4
<pre class="brush:php;toolbar:false;"> - name: Install ${{ matrix.compiler }}
run: |
sudo apt-get update
sudo apt-get install ${{ matrix.compiler }} ${{ matrix.compiler }}++
- name: Configure and Build
run: |
cmake -B build
cmake --build build
- name: Run Tests
run: cd build && ctest立即学习“C++免费学习笔记(深入)”;
若项目使用Google Test等测试框架,可在构建后运行测试并生成覆盖率报告。结合工具如gcov和lcov,可分析代码覆盖情况。
添加测试依赖与覆盖率收集:
- name: Install GTest
run: |
sudo apt-get install libgtest-dev
cd /usr/src/gtest
sudo cmake CMakeLists.txt
sudo make
sudo cp *.a /usr/lib
<ul><li><p>name: Build with coverage
run: |
cmake -B build -DCMAKE_BUILD_TYPE=Debug -DCOVERAGE=ON
cmake --build build</p></li><li><p>name: Generate coverage report
run: |
cd build
lcov --capture --directory . --output-file coverage.info
python3 -m http.server 8000 &
echo "Coverage report available at <a href="https://www.php.cn/link/fcbb3a1c04ec11f1506563c26ca63774">https://www.php.cn/link/fcbb3a1c04ec11f1506563c26ca63774</a>"
也可使用codecov上传报告到在线服务:
- name: Upload to Codecov uses: codecov/codecov-action@v3 with: file: ./build/coverage.info
当CI通过后,可自动打包构建产物并发布为GitHub Release,适用于发布命令行工具或库。
在工作流末尾添加部署步骤:
- name: Archive build artifacts
if: success()
uses: actions/upload-artifact@v3
with:
name: binaries
path: build/
<ul><li>name: Create GitHub Release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.ref_name }}
files: build/*
这样,当你打一个Git tag(如v1.0.0),就会自动创建Release并附上构建好的可执行文件。
基本上就这些。通过合理配置GitHub Actions,C++项目也能拥有高效可靠的自动化流程,从提交代码到部署发布一气呵成,不复杂但容易忽略细节。
以上就是c++++如何使用GitHub Actions进行CI/CD_c++自动化构建、测试与部署的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号