Обновления с одной сборкой

Первоначальный выпуск Rawhide Gating предназначен исключительно для обновлений с одной сборкой. Этот выпуск вступает в силу в июле 2019 г.

Что такое обновления с одной сборкой?

Обновления с одной сборкой — это обновления, содержащие одну сборку, которая не имеет тесной зависимости от других сборок и поэтому может безопасно обрабатываться изолированно.

Например, пакет rpms/pass — это простой bash-скрипт, поставляемый с некоторой документацией и утилитами (для emacs, vim или zsh). Для сборки он зависит от git, gnupg2, perl-generators и tree, а для запуска дополнительно от xclip. Он не зависит тесно от конкретной версии ни одного из них (только имеет минимально требуемую версию для tree). Он не полагается на какой-либо ABI, не требует пересборки при изменениях или обновлениях soname.

Пакеты такого стиля являются кандидатами для обновлений с одной сборкой. Их можно собирать и тестировать самостоятельно.

Как работает гейтинг обновлений с одной сборкой?

Обновления с одной сборкой легко гейтировать, так как их можно тестировать в изоляции от других сборок. То есть система CI может взять сборку, протестировать её, выполнить её гейтинг или пропустить её, не принимая во внимание никакие другие изменения (т. е. пакеты/сборки).

Рабочий процесс следующий:

  • Когда вы собираете ваш пакет для Rawhide, он попадает в тег Koji по умолчанию (тег кандидата: -updates-candidate).

  • Bodhi получит уведомление о попадании вашей сборки в этот тег Koji через нашу шину сообщений. Он автоматически создаст обновление для этой сборки от вашего имени. Обновление начнёт в статусе Pending, а сборка будет перемещена в тег -signing-pending.

  • RoboSignatory получает уведомление через нашу шину сообщений о том, что ваша сборка попала в этот тег, он берёт сборку, подписывает её и перемещает в тег -updates-testing-pending.

  • Bodhi получает уведомление через нашу шину сообщений о том, что ваша сборка подписана и перемещена в этот тег, он помечает сборку как подписанную и переводит обновление в статус Testing.

  • Тесты будут запущены, их результаты будут переданы в ResultsDB, который объявит эти результаты, что заставит Greenwave обратиться к вашему файлу gating.yaml, чтобы проверить, выполнены ли все требуемые критерии этой сборки или нет. Если выполнены, Greenwave отправит сообщение в шину сообщений, объявляя своё решение.

  • Bodhi будет слушать эти сообщения от Greenwave. Получив их, он поместит соответствующую сборку в финальный тег Koji (т. е. стабильный тег) и пометит обновление как Stable.

На этом этапе ваша сборка попала в стабильный тег в Koji, следовательно, она доступна в buildroot для использования и опоры на неё кем угодно, а соответствующее обновление Bodhi было помечено как стабильное.

Обратите внимание, что то, что обновление является stable, не означает, что вы сможете установить его через dnf/yum. Это означает, что сборка доступна в buildroot Rawhide. Она будет отправлена на зеркало после успешного завершения следующей сборки Rawhide.

Упрощённая диаграмма рабочего процесса обновлений с одной сборкой

Simplified single build update