From: Igor Vlasenko <vlasenko@imath.kiev.ua> To: devel@lists.altlinux.org Subject: [devel] I: обслуживание субрепозитория с помощью autorepo-scripts. Date: Thu, 1 Aug 2013 21:25:14 +0300 Message-ID: <20130801182514.GA27759@dad.imath.kiev.ua> (raw) Пакет 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.
reply other threads:[~2013-08-01 18:25 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20130801182514.GA27759@dad.imath.kiev.ua \ --to=vlasenko@imath.kiev.ua \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
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