[devel] I: обслуживание субрепозитория с помощью autorepo-scripts.

Igor Vlasenko vlasenko на imath.kiev.ua
Чт Авг 1 22:25:14 MSK 2013


Пакет autorepo-scripts.

Скрипты пакета autorepo-scripts предназначены для обслуживания субрепозитория, т. е. некоторого репозитория, который является компонентой другого, большего репозитория, расширяет или перекрывает этот больший репозиторий. Например, репозиторий autoimports/Sisyphus расширяет репозиторий Sisyphus, а  репозиторий autoports/p7 перекрывает (предоставляет обновления) репозиторий p7/branch.

Мотивацией создания  autorepo-scripts послужили генераторы пакетов. Генератор пакетов запросто может выдать за раз на-гора от нескольких сот до нескольких тысяч пакетов. Отправить эти сотни и тысячи пакетов в incoming  это парализовать свою работу на несколько суток. Относительно  генераторов пакетов  incoming слишком медленный, многие генераторы пакетов выдают пакеты быстрее, чем incoming успевает их ставить в очередь. Отсюда первая мотивация  распараллелить сборку. Пусть incoming остается для пакетов, сопровождаемых руками, а сгенерированные пакеты параллельно собрать рядом.

Вторая мотивация - компоненты позволяют логически разделить пакеты на разные классы (например, по происхождению или по уровням тестирования). Опять же,  генераторы пакетов послужили толчком, так как в начале было много просьб собирать их не в Сизиф, а куда-то отдельно.

В autorepo-scripts есть 2 основных режима работы: автоматический режим работы и полуавтоматический режим работы. 

В автоматическом режиме работы в crontab пользователя, под которым настроены autorepo-scripts, прописывается периодический вызов скрипта autorepo-daily. После этого нода может работать полностью самостоятельно: в цикле работы вызывается генератор списков имен на сборку, затем вызывается генератор пакетов, пакеты собираются и при успехе и отсутствии проблем (нет unmets, проходит install test) отправляются в репозиторий, также происходит уход за репозиторием (будет подробнее описано позже), и при необходимости рассылка оповещений.

В полуавтоматическом режиме работы в crontab пользователя, под которым настроены autorepo-scripts, прописывается периодический вызов скрипта autorepo-daily-managed. Этот скрипт осуществляет уход за субрепозиторием, но не собирает пакеты. Уход за репозиторием включает в себя попытку пересобрать пакеты, в которых возникли unmets (основной репозиторий, например, Sisyphus, не стоит на месте, поэтому в субрепозитории возникают  unmets, даже если субрепозиторий не меняется), поиск и удаление устаревших пакетов (в зависимости от настроек для утилиты autorepo-purge), ведение архива репозитория, при необходимости рассылка оповещений.

Чтобы собрать пакеты в субрепозиторий, работающий в полуавтоматическом режиме, нужна инициатива пользователя. Пользователь обновляет списки и запускает генератор пакетов, или иным образом выкладывает исходные src.rpm пакеты, которые нужно выложить  в субрепозиторий, в подпапку ./OUT рабочего каталога, после чего запускает скрипт autorepo-mass-build.

Кроме src.rpm пакетов, поддерживаются tar архивы, в формате, которым gear обменивается с hasher, а также транзакции из набора src.rpm или hasher tar архивов.

Скрипт autorepo-mass-build в обычном режиме собирает по отдельности каждую транзакцию или отдельный пакет, проверяет их на unmets и на устанавливаемость, и складывает их в подпапки TASK.GOOD (прошли тесты) TASK.BAD (засыпались на сборке) TASK.UGLY (собрались, но не прошли тесты), затем в конце мержит содержимое  TASK.GOOD с субрепозиторием. 

С опцией -c скрипт autorepo-mass-build работает в режиме continuous integration, т. е. мержит TASK.GOOD с субрепозиторием после каждой сборки, а не в конце.

Таким образом, autorepo-scripts позволяют организовать свой собственный небольшой incoming и субрепозиторий.

Если есть желание сопроводжать для сообщества такой субрепозиторий, который по каким-то причинам не может быть в Сизифе, то недавно развернутый облачный кластер автоматизации ( http://watch.altlinux.org/pub/monitor/index.htm ) предоставляет еще одну альтернативу планируемым карманам: можно завести там отдельного псевдопользователя, развернуть под ним сборочную ноду, дать к ней доступ по ssh, и получить возможность сопровождать свой субрепозиторий с помощью autorepo-scripts публично.

Настройки скриптов autorepo-scripts хранятся в каталоге '.autorepo'. Настройки, каталог '.autorepo', ищется в текущем каталоге, затем в $HOME. Под одним пользователем можно обслуживать сразу несколько субрепозиториев, если создать несколько рабочих каталогов для каждого субрепозитория, поместив в каждом свой каталог '.autorepo'. Однако такой вариант сложнее в настройке, так как для одновременной сборки в разные субрепозитории необходимо будет выделять и администрировать subconfig  identifiers для hasher. Поэтому  сборочные ноды используют архитектуру, когда  для каждого субрепозитория создается свой отдельный псевдопользователь.


Настройки репозитория autorepo-scripts.

Основные настройки хранятся в файле '.autorepo/config'.
Базовые настройки:

Переменная Значение

AUTOREPO_BRANCH
Sisyphus, p7,    целевая платформа.

AUTOREPO_ROOT
Например, /var/ftp/pub/ALTLinux/autoimports/Sisyphus  
место, где расположен субрепозиторий.

AUTOREPO_ARCHIVE_ROOT
Если указано, то скрипт autorepo-archive будет по указанному адресу вести архив субрепозитория.

AUTOREPO_COMPONENT_NAME
Название компоненты apt создаваемого субрепозитория.
По умолчанию  classic.

GB_ARCH
Архитектуры, под которые собираются пакеты субрепозитория. По умолчанию - i586 x86_64.

GB_REPO_NAME
GB_REPO_CODENAME
GB_REPO_VERSION
GB_REPO_SIGNER
GB_REPO_ARCHIVE
GB_REPO_DESCRIPTION
Опциональные переменные, используются как опции genbasedir при генерации индексов apt репозитория.
Тот же смысл, как и в incoming.
Имеют значения по умолчанию, основанные на AUTOREPO_COMPONENT_NAME.

AUTOREPO_ADMIN_MAIL
E-mail администратора субрепозитория для оповещений утилитами autorepo-daily и autorepo-daily-managed.

AUTOREPO_CYBERTALK_EMAIL
Если установлено, то на указанный e-mail утилиты autorepo-daily и autorepo-daily-managed будут отправлять сводку изменений  в пакетах субрепозитория.


В каталоге '.autorepo/apt'  хранятся файлы настройки apt репозитория.
Эти файлы передаются как --apt-config= в hasher и mkaptbox.
Файлы должны быть для каждой поддерживаемой архитектуры.

Файлы (пример для i586) - Где используется.

.config/apt/apt.conf.i586
Конфигурация apt замыкания субрепозитория с целевой платформой для архитектуры i586 -
используется в  mkaptbox для проверки субрепозитория на unmets.

.config/apt/build.conf.i586
Конфигурация apt для используемой сборочной среды для архитектуры i586.


-- 

Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



Подробная информация о списке рассылки Devel