Ответ
Я настраивал CI/CD пайплайны для проектов на C++ с использованием GitLab CI/CD и GitHub Actions. Основная цель — автоматизация сборки, тестирования и анализа кода для каждого коммита или пулл-реквеста.
Типичный стек для C++ проекта:
- Система сборки: CMake.
- Компиляторы: GCC, Clang (сборка под разные платформы и стандарты).
- Тестирование: Google Test (GTest) или Catch2.
- Статический анализ: Clang-Tidy, Cppcheck.
- Форматирование: Clang-Format.
- Артефакты: Загрузка собранных бинарников или создание Docker-образов.
Пример конфигурации .gitlab-ci.yml:
stages:
- build
- test
- analyze
variables:
GIT_SUBMODULE_STRATEGY: recursive
.build-template: &build-template
stage: build
script:
- mkdir -p build && cd build
- cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-Werror" ..
- cmake --build . --parallel
build-gcc:
<<: *build-template
image: gcc:12
build-clang:
<<: *build-template
image: clang:15
unit-tests:
stage: test
image: gcc:12
script:
- mkdir -p build && cd build
- cmake -DBUILD_TESTS=ON ..
- cmake --build . --parallel
- ./bin/runUnitTests
clang-tidy:
stage: analyze
image: silkeh/clang:15
script:
- mkdir -p build && cd build
- cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
- run-clang-tidy -checks='*' -warnings-as-errors='*'
На проекте это позволило быстро выявлять ошибки компиляции, регрессии в тестах и проблемы со стилем кода, значительно повысив надежность процесса разработки.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶