23 апреля 2026 № 1 (2026)

ROSARIUM

газета советского программного инженера

Что такое ABF

Архитектура платформы, преимущества облачной сборки.

На этой странице

ABF (Automated Build Farm) — это платформа ROSA для автоматизированной сборки и публикации пакетов.

Важно
В старых материалах ещё встречается адрес abf.io. В этом курсе основным публичным адресом считаем abf.rosa.ru. Если сам интерфейс ABF показывает другой canonical URL, ориентируйтесь на него.

Зачем нужна сборочная ферма

Локальная сборка удобна для разработки, но имеет ограничения:

  • Одна архитектура — вы можете собрать только для своей системы
  • Загрязнённое окружение — установленные пакеты влияют на сборку
  • Невоспроизводимость — «у меня работает» не гарантирует работу у других
  • Ручная публикация — нужно самому выкладывать RPM

ABF решает эти проблемы.

Возможности ABF

Мультиархитектурная сборка

Одним нажатием кнопки пакет собирается для всех доступных архитектур (зависит от платформы):

  • x86_64
  • aarch64 (ARM64)
  • i686 (если доступна для выбранной платформы)

Чистое окружение

Каждая сборка начинается с нуля:

  1. Создаётся минимальный chroot
  2. Устанавливаются только указанные BuildRequires
  3. Запускается сборка
  4. Окружение уничтожается

Это гарантирует, что если пакет собрался на ABF — он соберётся где угодно.

Автоматическая публикация

После успешной сборки пакет публикуется в тот репозиторий проекта, который вы выбрали при запуске сборки. На практике новичок почти всегда начинает с личного репозитория.

Логи и артефакты

Всё сохраняется:

  • Полные логи сборки
  • Готовые RPM и SRPM
  • История всех сборок

Архитектура ABF

┌─────────────────────────────────────────────────────────┐
│                     WEB INTERFACE                        │
│                 https://abf.rosa.ru                     │
└─────────────────────────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────┐
│                     ABF API                              │
│              REST API для автоматизации                  │
└─────────────────────────────────────────────────────────┘
                           │
           ┌───────────────┼───────────────┐
           ▼               ▼               ▼
    ┌──────────┐    ┌──────────┐    ┌──────────┐
    │ Builder  │    │ Builder  │    │ Builder  │
    │ x86_64   │    │ i686     │    │ aarch64  │
    └──────────┘    └──────────┘    └──────────┘
           │               │               │
           └───────────────┼───────────────┘
                           ▼
┌─────────────────────────────────────────────────────────┐
│                   РЕПОЗИТОРИИ                            │
│          abf-downloads.rosalinux.ru                      │
└─────────────────────────────────────────────────────────┘

Компоненты ABF

Проекты (Projects)

Каждый пакет — это проект с git-репозиторием:

https://abf.rosa.ru/import/firefox
         ↑        ↑
      группа   название проекта

Группы (Groups)

Проекты объединяются в группы:

  • import — основные пакеты дистрибутива
  • community — пакеты от сообщества
  • username_personal — личные проекты пользователя

Платформы (Platforms)

Платформа — это техническое имя репозитория и сборочной среды. В рамках курса вам чаще всего встретятся:

  • rosa13 — актуальная публичная платформа ROSA Fresh 13.x;
  • rosa2021.1 — семейство ROSA Fresh 12.x / LTS.

Точное имя платформы всегда смотрите прямо в ABF при создании build list.

Репозитории платформы

Каждая платформа имеет репозитории (набор может отличаться):

  • main/release — стабильные пакеты
  • main/updates — обновления
  • main/testing — тестовые версии
  • contrib/release — пакеты сообщества

URL-структура ABF

Веб-интерфейс

https://abf.rosa.ru/группа/проект
https://abf.rosa.ru/import/firefox
https://abf.rosa.ru/username_personal/mypackage

Git-репозитории

git@abf.rosa.ru:группа/проект.git
git@abf.rosa.ru:import/firefox.git

Репозитории пакетов

https://abf-downloads.rosalinux.ru/группа/repository/платформа/архитектура/тип/статус/
https://abf-downloads.rosalinux.ru/import/repository/ROSA_PLATFORM/x86_64/main/release/
# где ROSA_PLATFORM = rosa13 (или имя платформы из ABF)

Workflow на ABF

1. Создание проекта
   └── git-репозиторий с SPEC и исходниками

2. Запуск сборки
   └── Выбор платформы и архитектур

3. Сборка на билдерах
   ├── Создание chroot
   ├── Установка BuildRequires
   ├── rpmbuild
   └── Очистка

4. Результат
   ├── Успех → RPM и SRPM в репозитории проекта
   └── Ошибка → Анализ логов → Исправление → Повтор

Как новичку использовать ABF без боли

  1. Сначала соберите пакет локально.
  2. Только потом переносите его в ABF.
  3. Начинайте с одной платформы и одной архитектуры, обычно rosa13 + x86_64.
  4. Публикуйте сперва в личный репозиторий.
  5. Лишь после успешной локальной и ABF-сборки думайте о ревью и общем репозитории.

Преимущества ABF для сборщика

  1. Не нужно мощное железо — сборка на сервере
  2. Все архитектуры сразу — один клик
  3. Гарантия воспроизводимости — чистое окружение
  4. Автоматизация — API для скриптов
  5. История — все сборки сохраняются
  6. Совместная работа — права доступа, группы

Сравнение с другими системами

СистемаИспользуется в
ABFROSA, OpenMandriva
KojiFedora, CentOS
OBSopenSUSE
LaunchpadUbuntu

Проверьте понимание

  1. Какие преимущества даёт сборка на ABF по сравнению с локальной?
  2. Что такое «чистое окружение» сборки?
  3. Из каких основных компонентов состоит ABF?
  4. Куда попадают пакеты после успешной сборки?
  5. Какие архитектуры поддерживает ABF?

Далее: Регистрация и настройка