05 марта 2026 № 1 (2026)

ROSARIUM

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

Запуск и мониторинг сборки

Как запустить сборку, следить за прогрессом, получить результат.

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

После подготовки репозитория можно запустить сборку на ABF.

Запуск сборки через веб-интерфейс

Шаг 1: Перейти в проект

https://abf.io/username_personal/mypackage

Шаг 2: Нажать «New build»

Или перейти в Build → New build list.

Шаг 3: Настроить параметры

  1. Project — выбран автоматически
  2. Branch/Tag — ветка по умолчанию (main/master) или конкретный тег
  3. Platform — выберите версию ROSA (в курсе используем Fresh 13.1):
    • rosa13.1 — ROSA Fresh 13.1
    • другие платформы — по списку в ABF
  4. Architecture — выберите архитектуры (доступность зависит от платформы):
    • x86_64 — 64-битная
    • aarch64 — ARM 64-bit
    • i686 — 32-битная (если доступна)
  5. Repository — куда публиковать результат (набор зависит от платформы):
    • main/release — стабильный
    • main/testing — для тестирования

Шаг 4: Запустить

Нажмите «Start build».

Статусы сборки

СтатусЗначение
PendingВ очереди
Build startedСборка началась
Build is being publishedПубликация в репозиторий
SuccessУспешно завершена
Build errorОшибка сборки
Publish errorОшибка публикации
Tests failedТесты не прошли

Мониторинг сборки

Страница сборки

После запуска вы попадёте на страницу со статусом:

https://abf.io/build_lists/12345

Здесь видно:

  • Текущий статус
  • Время начала/окончания
  • Ссылки на логи
  • Результирующие пакеты

Список сборок

Все ваши сборки:

https://abf.io/build_lists

Фильтры:

  • По проекту
  • По статусу
  • По платформе

Email-уведомления

ABF отправляет email при:

  • Начале сборки
  • Успешном завершении
  • Ошибке

Настройте в Settings → Notifications.

Просмотр логов

Основные логи

  • mock-init.log — инициализация окружения
  • mock.log — общий лог mock
  • build.log — лог rpmbuild

Чтение логов

Логи доступны по ссылке на странице сборки.

Build log: [View] [Download]

При ошибке смотрите конец лога:

# Скачать и посмотреть конец
curl -s "https://abf.io/.../build.log" | tail -100

Типичная структура лога

==> Start building: mypackage-1.0.0-1.src.rpm
...
Executing(%prep): ...
Executing(%build): ...
error: Bad exit status from /var/tmp/rpm-tmp.xxxxx (%build)
    Bad exit status from /var/tmp/rpm-tmp.xxxxx (%build)

Результаты сборки

Успешная сборка

После успеха доступны:

  • SRPM — исходный пакет
  • RPM — бинарные пакеты для каждой архитектуры

Ссылки на странице сборки:

Build results:
  - mypackage-1.0.0-1.rosa13.1.src.rpm
  - mypackage-1.0.0-1.rosa13.1.x86_64.rpm
  - mypackage-debuginfo-1.0.0-1.rosa13.1.x86_64.rpm

Публикация

Пакеты автоматически появляются в репозитории:

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

Обновление кеша:

sudo dnf clean expire-cache
sudo dnf install mypackage

Пересборка

После исправления ошибки

  1. Исправьте SPEC или исходники
  2. Закоммитьте и отправьте:
    git add .
    git commit -m "Fix build error"
    git push
    
  3. Запустите новую сборку

Пересборка без изменений

Иногда нужно пересобрать (например, новая версия зависимости):

  1. Откройте предыдущую сборку
  2. Нажмите «Rebuild»

Или создайте новую сборку с тем же коммитом.

Сборка для нескольких платформ

Можно запустить сборку одновременно для нескольких платформ:

  1. Выберите несколько в списке Platform
  2. Или запустите отдельные сборки

Каждая платформа — отдельная сборка со своим статусом.

Зависимости между пакетами

Если ваш пакет зависит от другого вашего пакета:

Вариант 1: Сначала собрать зависимость

  1. Соберите и опубликуйте пакет-зависимость
  2. Дождитесь публикации в репозитории
  3. Соберите основной пакет

Вариант 2: Контейнеры сборки

ABF позволяет указать дополнительные репозитории:

В настройках сборки → Additional repos:

  • Укажите URL вашего личного репозитория
  • Или ID другой сборки

API для автоматизации

Запуск сборки через API

curl -X POST \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "project_id": 12345,
    "commit_hash": "abc123",
    "arch_id": 1,
    "platform_id": 10
  }' \
  https://abf.io/api/v1/build_lists

Проверка статуса

curl -H "Authorization: Bearer YOUR_TOKEN" \
  https://abf.io/api/v1/build_lists/12345

Советы по эффективной работе

1. Сначала проверяйте локально

rpmbuild -ba mypackage.spec
rpmlint ~/rpmbuild/RPMS/*/*.rpm

2. Используйте mock

Mock имитирует чистое окружение ABF (имя профиля смотрите в /etc/mock):

mock -r rosa-13.1-x86_64 --rebuild mypackage.src.rpm

3. Смотрите логи внимательно

Часто ошибка очевидна из последних строк лога.

4. Не спамьте сборками

Исправляйте ошибки локально, потом отправляйте на ABF.

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

  1. Какие параметры нужно указать при запуске сборки?
  2. Что означает статус «Build is being published»?
  3. Где найти логи сборки?
  4. Куда попадают пакеты после успешной сборки?
  5. Как пересобрать пакет после исправления ошибки?

Далее: Разбор ошибок сборки