Проблема
В мире embedded-разработки CI/CD часто воспринимается как что-то из другой вселенной. «У нас же железо, какой Docker?» - типичная реакция. Но именно в embedded автоматизация приносит наибольшую отдачу: цена ошибки высока, а ручное тестирование занимает дни.
Наш подход
Мы разбили pipeline на несколько стадий:
- Static Analysis - clang-tidy, cppcheck, MISRA-проверки
- Unit Tests - GoogleTest в Docker-контейнере с эмуляцией HAL
- Integration Tests - QEMU для ARM, автоматический запуск firmware
- Hardware-in-the-Loop - тесты на реальных платах через CI runner
Инструменты
- GitLab CI - основной orchestrator
- Docker - изоляция окружений сборки (arm-gcc, tools)
- QEMU - эмуляция ARM для быстрых smoke-тестов
- Custom test runners - Python-скрипты для HIL-тестирования
Результаты
- Цикл релиза сократился с 2 недель до 1 дня
- Количество regression-багов в production уменьшилось на 70%
- Время onboarding нового инженера - с 2 недель до 3 дней
Выводы
CI/CD в embedded - это не роскошь, а необходимость. Начните с малого: статический анализ и unit-тесты в Docker. Затем постепенно добавляйте QEMU и HIL.