首页 > 后端开发 > C++ > 正文

c++如何使用GitHub Actions进行CI/CD_c++自动化构建、测试与部署

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

c++如何使用github actions进行ci/cd_c++自动化构建、测试与部署

在C++项目中使用GitHub Actions实现CI/CD,可以自动化完成代码构建、单元测试和部署流程,提升开发效率与代码质量。整个过程无需本地反复操作,只要推送代码,就能自动验证是否通过编译和测试。

配置GitHub Actions工作流

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++免费学习笔记(深入)”;

美图AI开放平台
美图AI开放平台

美图推出的AI人脸图像处理平台

美图AI开放平台 111
查看详情 美图AI开放平台

支持多平台与多编译器

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等测试框架,可在构建后运行测试并生成覆盖率报告。结合工具gcovlcov,可分析代码覆盖情况。

添加测试依赖与覆盖率收集:

- 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++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号