* [devel] I: обслуживание субрепозитория с помощью autorepo-scripts.
@ 2013-08-01 18:25 Igor Vlasenko
0 siblings, 0 replies; only message in thread
From: Igor Vlasenko @ 2013-08-01 18:25 UTC (permalink / raw)
To: devel
Пакет 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.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2013-08-01 18:25 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-01 18:25 [devel] I: обслуживание субрепозитория с помощью autorepo-scripts Igor Vlasenko
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git