[devel] I: autoports.altlinux.org robot
Igor Vlasenko
vlasenko на imath.kiev.ua
Ср Фев 23 16:01:30 UTC 2011
Уважаемые коллеги,
скоро вступят в строй autoports.altlinux.org.
Этот робот официально еще не работает (когда заработает,
будет официальный анонс) но уже сейчас желающие могут там разжиться,
например, новейшими freeciv и wesnoth, собранными под P5.
Пока выношу на обозрение документацию по этому сервису.
---------------------------------------------------------------------
Autoports: робот (программный комплекс автоматизации, ПКА)
портирования пакетов из Sisyphus в последний стабильный бранч.
---------------------------------------------------------------------
В настоящее время альфа-версия сервиса Autoports развернута и работает
в контейнере autoports.altlinux.org. Результаты работы сервиса
доступны в сети Интернет как ftp/rsync apt-репозиторий autoports на
autoports.altlinux.org.
Схема работы Autoports.
Пакеты из нестабильной ветки репозитория СПО Sisyphus разбиты с
точки зрения системы на три типа списков: белые списки, серый список и
черные списки. В черных списках указаны пакеты, автоматическое
портирование которых запрещено. Белые списки состоит из пакетов, для
которых портирование разрешено. Остальные пакеты попадают в серый
список. Белые и черные списки делятся на созданные вручную
администратором узла, на котором развернут ПКА Autoports, и
автоматически генерируемые списки. Списки, созданные вручную, имеют
приоритет над автоматически генерируемыми списками.
Примеры генераторов списков:
Занести пакет в белый список, если его RPM tag Group имеет вид Games/*.
Занести пакет в черный список, если он порождает разделяемую
библиотеку, которая используется более чем одним сторонним пакетом.
В настоящее время серый список не используется. Однако в будущем
планируется добавить к системе публичный web-интерфейс, который
позволял бы заказывать автосборку пакетов из серого списка внешним
пользователям. Также планируется дать возможность майнтейнерам пакетов
подписывать свои пакеты на автосборку путем добавления в spec-файле
пакета специальной директивы-комментария.
Результатом работы ПКА Autoports является постоянно обновляемый
репозиторий пакетов RPMS.autoports, публично доступный в сети
Интернет. Текущая обновляемая ветвь репозитория пакетов RPMS.autoports
(autoports/5.1) является репозиторием-оверлеем над текущим стабильным
дистрибутивом (branch/p5). Это позволяет разнести разные задачи
обновления по разным бранчам (bugfixes/security fixes для branch/p5,
стабильные обновления для branch/5.1, edge-обновления для
autoports/5.1+backports/5.1) что должно повысить стабильность
дистрибутива в целом.
Пакеты из репозитория пакетов autoports/5.1 собираются в чистом
окружении branch/p5. Это позволяет использовать пакеты из
репозитория пакетов autoports для точечного обновления пакетов из
обеих стабильных ветвей branch/p5 и branch/5.1. Пакеты из репозитория
пакетов autoports отличаются своим внешним видом (имеют суффикс .A51.x
в релизе пакета), что позволяет легче диагностировать проблемы в
системе для неопытного пользователя. ПКА Autoports производит
портирование пакетов только в последний текущий бранч. В момент
появления нового бранча старая ветвь autoports замораживается, и
создается новая ветвь autoports для нового бранча. В дальнейшем, вся
работа ПКА Autoports проводится с новой ветвью. При этом версии
пакетов в autoports старого бранча остаются всегда меньше версий
пакетов в новом бранче. Такое архитектурное решение выбрано для того,
чтобы не создавать пользователям проблем при обновлении до следующей
стабильной версии дистрибутива. При выходе новой стабильной версии
дистрибутива пользователям предлагается обновить свой дистрибутив до
этой новой стабильной версии, после чего в дальнейшем они смогут
пользоваться уже новой ветвью autoports для нового бранча.
Основной программой ПКА Autoports является скрипт autoports-daily,
запускаемый периодически (с помощью crontab). Цикл работы скрипта
autoports-daily следующий:
запустить скрипты-генераторы черных и белых списков для синхронизации
с текущим сизифом:
слить ручные и автоматические черные и белые списки в один текущий
список пакетов, подлежащих портированию в стабильный бранч;
пройти по всем пакетам из текущего списка, сравнивая их версию-релиз с
версией-релизом (с учётом суффиксов портирования) в p5/branch,
5.1/branch, 5.1/autoports. Если версия-релиз пакета в нестабильной
ветке репозитория СПО Sisyphus больше, чем во всех указанных
репозиториях (с учётом суффиксов портирования), то проверяется
дополнительно, не проводилась ли раньше неудачная попытка
бекпортирования и не истек ли ее тайм-аут, и, если проверки пройдены,
генерируется srpm-пакет для репозитория autoports и производится
попытка его сборки в среде p5/branch. После удачной сборки полученные
бинарные пакеты проверяются на валидность (в том числе, отсутствие
unmets в порождаемом репозитории) и, в случае успеха, перемещаются в
отстойник новособранных пакетов.
В завершение цикла работы происходит подписывание пакетов в отстойнике
новособранных пакетов, вытеснение пакетов из 5.1/autoports пакетами
из отстойника новособранных пакетов, перегенерация индексов для
репозитория пакетов 5.1/autoports, что и завершает цикл обновления
репозитория пакетов 5.1/autoports.
После этого обновленный 5.1/autoports публично доступен в сети
интернет, а узел, на котором развернут ПКА Autoports, готов к
следующему циклу работы.
Необходимо заметить, что на тестовом узле autoports.altlinux.org, на
котором развернут ПКА Autoports, нестабильная ветвь репозитория СПО
Sisyphus, а также стабильные ветви репозитория СПО p5/branch и
5.1/branch монтируются по сети с удаленного узла, на котором
синхронизация ветвей репозитория СПО производится автоматически. В
противном случае, необходимо было бы включить в начало цикла работы
ПКА Autoports синхронизацию ветвей репозитория СПО.
Пробные прогоны ПКА Autoports проводились на тестовом множестве из
318 пакетов. 144 пакета из этого множества имели более свежие версии в
нестабильной ветви репозитория СПО Sisyphus, поэтому подходили в
качестве объекта бекпортирования.132 из них были успешно
бакпортированы на стабильную ветвь репозитория СПО
p5/branch. Собираемость полученных пакетов, таким образом, составила
92%.
Планируется, что по окончании альфа-, а затем и бета-тестирования, в
промышленном режиме, база сопровождения ПКА Autoports будет состоять
от 20% пакетов нестабильной ветви репозитория СПО Sisyphus, т. е. от
2000 пакетов, что при собираемости 92% дает оценку базы реального
сопровождения ПКА Autoports от 1800 пакетов.
Заметим, что есть скрытые резервы повышения собираемости пакетов за
счет использования rpm-build-compat-* пакетов и сотрудничества с
майнтайнерами в нестабильной ветви репозитория СПО Sisyphus и
администраторами в стабильных бранчах. Однако по объективным причинам
достить 100% собираемости невозможно, например, если в бранче только
старая версия библиотеки, а пакет может быть собран только с новой
версией.
Чтобы покрыть часть непересобирающихся случаев, планируется поднять
incoming для еще одного репозитория-оверлея backports над текущим
стабильным дистрибутивом (5.1/backports над branch/5.1), который
предлагается позиционировать как дополнение к autoports, в которое
можно собирать пакеты, отсутствующие в autoports, либо такие, которые
нуждаются в дополнительной ручной настройке для работы в текущем
стабильном дистрибутиве.
Также планируется в в промышленном режиме эксплуатации поднять над
ПКА Autoports web-интерфейс на основе Prometeus2 разработки Игоря
Зубкова.
--
Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine
Подробная информация о списке рассылки Devel