⚙️ CI/CD и автоматизация сборок
🎯 Цель раздела
После изучения этого раздела вы:
- поймёте, как устроен процесс CI/CD в экосистеме ROSA Linux;
- узнаете, как автоматизировать сборку и публикацию пакетов;
- научитесь использовать Automated Build Farm (ABF) для интеграции с Git;
- сможете настраивать триггеры сборки и отслеживать статусы через веб-интерфейс.
🧩 Что такое CI/CD для RPM-пакетов
CI/CD (Continuous Integration / Continuous Delivery) в ROSA Linux — это автоматический процесс:
- проверки изменений в Git;
- сборки пакета;
- запуска тестов и линтеров;
- публикации RPM в репозитории ROSA.
Вся инфраструктура реализована через Automated Build Farm (ABF) — распределённую систему автоматической сборки и проверки.
🧱 Поток работы (Pipeline Overview)
Разработчик → Git push / Pull Request → ABF → Build → Test → Publish
Этапы:
- Push / Pull Request (PR) Отправка изменений в Git или создание PR в репозитории пакета на ABF.
- Сборка (Build) ABF автоматически создаёт SRPM и запускает сборку в изолированной среде.
- Проверка (Test & Lint)
Выполняются
rpmlint, unit-тесты, проверка зависимостей. - Публикация (Publish) Готовые RPM попадают в репозиторий ROSA после успешного завершения пайплайна.
🚀 Автоматическая сборка при PR
Каждый Pull Request (PR) в репозиторий ABF может быть автоматически собран системой CI.
Для этого в .abf.yml указывается:
build:
distribution: rosa2024.1
arch:
- x86_64
- aarch64
ci: true
Когда PR создаётся, ABF:
- Проверяет изменения SPEC-файла;
- Генерирует SRPM;
- Запускает сборку в mock-подобной среде;
- Публикует лог сборки прямо в интерфейсе PR.
💡 Такой подход гарантирует, что каждая ветка и PR проходят тестовую сборку до вливания.
🧰 Управление сборками через CLI
ABF имеет REST API и CLI для управления сборками. Через CLI можно запускать, отменять или просматривать статус сборок:
abf build start hello.spec --branch update-1.2
abf build status 12345
abf build cancel 12345
⚙️ CLI-инструмент полезен для инженеров сопровождения, управляющих множеством пакетов.
📦 Публикация пакетов после сборки
После успешной сборки пакеты помещаются в:
https://abf-downloads.rosalinux.ru/<repo>/x86_64/
Репозиторий обновляется автоматически, и пакеты становятся доступными через dnf.
Проверка публикации:
dnf info hello
🧠 Использование тегов и релизов
Чтобы зафиксировать стабильную версию пакета, используйте теги:
git tag -a v1.2 -m "Stable release for ROSA 2024.1"
git push origin v1.2
🔖 ABF автоматически создаёт сборку для каждого нового тега — это упрощает релизный цикл и ведение changelog’ов.
⚙️ Мониторинг и логи в ABF
ABF предоставляет подробные логи и артефакты каждой сборки:
- build.log — основной лог процесса;
- root.log — информация о зависимостях и установке;
- state.log — последовательность стадий сборки;
- mock.cfg — конфигурация окружения.
Все они доступны через веб-интерфейс проекта на https://abf.rosalinux.ru.
🔄 Автоматизация повторных сборок
Для переcборки без изменения исходников можно использовать триггеры:
abf build restart <build_id>
Или через интерфейс ABF:
- открыть нужный билд;
- нажать Rebuild;
- выбрать таргет (дистрибутив, архитектуру).
🧩 Интеграция с GitHub / внешними системами
ABF поддерживает Webhooks, которые позволяют интегрировать внешние Git-хостинги (например, GitHub или GitLab) для автоматического запуска сборок при PR или push.
Фрагмент .abf.yml:
hooks:
github:
enabled: true
on_push: true
on_pr: true
💡 Таким образом можно использовать ABF как backend для любых Git-проектов, требующих RPM-сборку.
🧠 Мини-тест для самопроверки
| Вопрос | Ответ |
|---|---|
| Что означает CI/CD в контексте ROSA? | Автоматическая сборка, тестирование и публикация пакетов |
| Какой файл управляет параметрами сборки ABF? | .abf.yml |
| Что происходит при создании Pull Request в ABF? | Автоматическая сборка и проверка пакета |
| Где хранятся логи сборок? | На странице проекта ABF (build.log, root.log, state.log) |
| Как инициировать сборку вручную? | Через CLI: abf build start <spec> |
🧭 Итого
Теперь вы:
- понимаете, как работает CI/CD в экосистеме ROSA;
- умеете использовать ABF для автоматической сборки;
- знаете, как работает интеграция с Git и PR-процесс;
- готовы перейти к следующему этапу — сопровождению пакетов и выпуску обновлений.
Следующий документ — “Сопровождение и выпуск обновлений”, где будет рассмотрен цикл жизни пакета, обновления версий, changelog, и принципы долгосрочной поддержки (LTS).