使用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 Actions通过.github/workflows目录下的YAML文件定义自动化流程。新建一个YAML文件(如ci-cd.yml),即可定义C++项目的CI/CD步骤。
基础结构如下:
name: C++ CIon: [push, pull_request]jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4- 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 - 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
name: Build with coveragerun: |cmake -B build -DCMAKE_BUILD_TYPE=Debug -DCOVERAGE=ONcmake --build build
name: Generate coverage reportrun: |cd buildlcov --capture --directory . --output-file coverage.infopython3 -m http.server 8000 &echo "Coverage report available at https://www.php.cn/link/fcbb3a1c04ec11f1506563c26ca63774"
也可使用codecov上传报告到在线服务:
- name: Upload to Codecovuses: codecov/codecov-action@v3with: file: ./build/coverage.info
自动化部署二进制文件或发布版本
当CI通过后,可自动打包构建产物并发布为GitHub Release,适用于发布命令行工具或库。
在工作流末尾添加部署步骤:
- name: Archive build artifacts if: success() uses: actions/upload-artifact@v3 with: name: binaries path: build/
- name: Create GitHub Releaseif: startsWith(github.ref, 'refs/tags/')uses: softprops/action-gh-release@v1with:tag_name: ${{ github.ref_name }}files: build/*
这样,当你打一个Git tag(如v1.0.0),就会自动创建Release并附上构建好的可执行文件。
基本上就这些。通过合理配置GitHub Actions,C++项目也能拥有高效可靠的自动化流程,从提交代码到部署发布一气呵成,不复杂但容易忽略细节。
以上就是c++++如何使用GitHub Actions进行CI/CD_c++自动化构建、测试与部署的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1488957.html
微信扫一扫
支付宝扫一扫