Ответ
Да, использовал GitHub Actions для настройки CI/CD пайплайнов в C++ проектах. Основная задача — автоматизация сборки, тестирования и проверки качества кода при каждом пуше или пулл-реквесте.
Пример workflow для C++ проекта:
name: C++ CI/CD
on: [push, pull_request]
jobs:
build-and-test:
runs-on: ubuntu-latest
strategy:
matrix:
compiler: [g++-11, clang++-14]
build_type: [Debug, Release]
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ${{ matrix.compiler }} cmake lcov
- name: Configure with CMake
run: |
cmake -B build -DCMAKE_CXX_COMPILER=${{ matrix.compiler }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-DBUILD_TESTS=ON
- name: Build
run: cmake --build build --parallel
- name: Run tests
run: cd build && ctest --output-on-failure
- name: Generate coverage report
if: matrix.build_type == 'Debug'
run: |
lcov --capture --directory . --output-file coverage.info
lcov --remove coverage.info '/usr/*' --output-file coverage.info
lcov --list coverage.info
В реальных проектах я также настраивал:
- Кэширование зависимостей (vcpkg, Conan) для ускорения сборок
- Статический анализ с помощью
clang-tidyиcppcheck - Проверку форматирования через
clang-format - Деплой артефактов (библиотек, исполняемых файлов) в GitHub Packages или на тестовые стенды
- Матричные сборки для разных компиляторов (GCC, Clang, MSVC) и операционных систем