Summary: | girar-etersoft-utils -> geet - создание пакетов из git.etersoft | ||
---|---|---|---|
Product: | LINUX@Etersoft | Reporter: | Евгений Синельников <sin> |
Component: | Общее | Assignee: | Dmitry M. Maslennikov <rlz> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | P5 | CC: | imelnikov, lav, pav, sin |
Version: | не указана | ||
Target Milestone: | выпуск 1.0 | ||
Hardware: | PC | ||
OS: | Linux | ||
URL: | http://git.etersoft.ru | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 1135 | ||
Deadline: | 2008-10-13 |
Description
Евгений Синельников
2008-04-04 11:04:56 MSD
Сделан пакет утилит autobuild, из которого предполагается собрать набор скриптов для робота. В задачи робота входят регулярные сборки репозиториев из git.eterrsoft.ru, раскладывание результатов в репозиторий разработчиков и оповещение ответственных за сборку об этих результатах. Необходимо описать логику работы скриптов в виде минимальной документации и организовать разворачиваемое решение поверх girar. Предполагается, что сборка проходит на специально выделенном сервере не привязанном к git.etersoft, что озаначает, необходимость создания специального пользователя, от имени которого который будет вестись работа в каталоге git.etersoft.ru:/archive/. Результат материализовался в виде двух пакетов: http://git.etersoft.ru/people/sin/packages/autobuild.git http://git.etersoft.ru/people/sin/packages/geet-robot.git autobuild представляет набор модулей на питоне для работы с git и gear. geet-robot - Gear Etersoft Robot - это набор утилит, реализующих политику сборки пакетов из Git-репозиториев rpm-пакетов. В него также водит сервис логика работы которого предполагает организовать автоматическую пересборку пакетов в репозитарий дистрибутива по запросам, событиям обновления репозиториевм и по времени. Пока он находится на стадии доработки. Пакет спланирован так, чтобы разворачиваться на сборочной среде, в которой доступен hasher и репозитории для сборки. Эти параметры могут изменены пользователся, которые въодят в группу geet_admin. Логика работы робота требует некоторго обсуждения и уточнения всех деталей поп безопасности. Сейчас предполагается, что у робота есть свой безпарольный ssh-ключ, с помощью которого он ходит на git.etersoft.ru, а после удачной сборки пакетов, с помощью этого ключа заливает результат обратно в свой собственный набор репозиториев - /archive. Это несколько отличается от схемы принятой сейчас в ALT Linux. Кроме этого отличия в интепретации собержимого /archive, который в ALT Linux сейчас представляет собой регулярный gear-srpmimport результатов сборки, у нашего робота несколько иной критерий получения обновлений для сборки. Если в ALT Linux планируется использовать теги, то у нас это специальная ветка, в общем случае любая, но по умолчанию - это rc. Push в эту или другую отслеживаемую ветку в girar означает для робота необходимость пересобрать пакет. Кроме всего прочего в autobuild сейчас входит полезный набот утилит geet-rpm, geet-hsh, позволяющий создавать не конфликтующие rpm-пакеты, для сборок во время отладки. Создавая временный commit утилиты добавляют к релизу суффикс вида dbg%ДАТА.%ВРЕМЯ. Это избавляет от еобходимости отслеживать во время отладки номер релиза, сохраняя возможность, увеличив исходный релиз, получить пакет старше всех предыдущих сборок. По такой же технологии планируется быть построена сборка пакетов роботом, который будет добавлять с своих репозиториях номер сборки пакета (вида bld1, blb2 и т.д.) и автоматически увеличивать его при пересборке одного и того же коммита. При написании была получена новая формула gear + etersoft = geet Именно так называется изначальный вариант, girar-etersoft-utils. Необходимо будет завершить эту часть для автоматической сборки любых пакетов из gear. Нужна минимальная документация... И, желательно, чтобы первоначальная настройка стала шаблоном для последующего использования по умолчанию. Текущие проблемы: - почта (отправка уведомлений, включается опцией, по умолчанию отключена); - переменные окружения, должны использоваться в шаблоне конфига, который по умолчанию настроен для сборки; - нужные параметры для geet-autobuilder, позволяющие пересобрать один отдельно взятый пакет, заменяя отдельные опции конфига Текущие баги 1) не отрабатывает наследование meta-целей при сборке из git.eter возникает ошибка, хотя аналогичная попытка локальной сборки из git.srv работает: [sin@server geet]$ geet-autobuilder -v * Make directory: /home/sin/.geet/history/rect * Update package rect from ['git.srv:/people/imelnikov/packages/rect.git', 'git.eter:/people/imelnikov/packages/rect.git'] (branch: master) * Make directory: /home/sin/.geet/archive/rect $ git-init + Initialized empty Git repository in .git/ $ git-fetch ['git.srv:/people/imelnikov/packages/rect.git', 'git.eter:/people/imelnikov/packages/rect.git'] +master:build - ssh: Could not resolve hostname [git.srv: Name or service not known - fatal: The remote end hung up unexpectedly $ git-checkout -f build - git checkout: updating paths is incompatible with switching branches/forcing - Did you intend to checkout 'build' which can not be resolved as commit? Traceback (most recent call last): File "/usr/bin/geet-autobuilder", line 71, in <module> AutoBuilder().process() File "/usr/bin/geet-autobuilder", line 66, in process ret = self.process_pfiles() File "/usr/bin/geet-autobuilder", line 58, in process_pfiles ret += [self.build_package(p) for p in packages_from_file(f)] File "/usr/bin/geet-autobuilder", line 50, in build_package self.update(p) File "/usr/bin/geet-autobuilder", line 31, in update Builder.update(self, p) File "/usr/lib/python2.5/site-packages/geet/builder.py", line 112, in update git.checkout('build', '-f') File "/usr/lib/python2.5/site-packages/geet/utils/functions.py", line 31, in callf return method(*args, **kwargs) File "/usr/lib/python2.5/site-packages/geet/git.py", line 59, in checkout run('git-checkout %s %s' % (args, branch)) File "/usr/lib/python2.5/site-packages/geet/utils/functions.py", line 122, in run raise RunError, ret geet.utils.functions.RunError: Abnormal program termination Содержимое pfile: meta srv <------>git = git.srv:/people/${packager}/packages/${name}.git <------>branch = master <------>target = i586 <------>destination = sisyphus:/var/ftp/pub/Etersoft <------>destination = newbranch:/var/ftp/pub/Etersoft meta eter srv <------>git = git.eter:/people/${packager}/packages/${name}.git meta force <------>force = yes meta rlz <------>packager = rlz meta vano <------>packager = imelnikov #python-module-kadmin5 srv vano #python-module-IceSSL srv vano force #python-module-Tartarus srv vano force #Tartarus-Kadmin5 srv vano force #Tartarus-Hello srv vano force #python-module-repofilter srv vano rect srv vano geet srv rlz 2) не обрабатываются ошибки отсутствия meta-целей. Например, если sin отсутствует, то для "openssl srv sin" мы получим: [sin@server geet]$ geet-autobuilder -v Traceback (most recent call last): File "/usr/bin/geet-autobuilder", line 71, in <module> AutoBuilder().process() File "/usr/bin/geet-autobuilder", line 66, in process ret = self.process_pfiles() File "/usr/bin/geet-autobuilder", line 58, in process_pfiles ret += [self.build_package(p) for p in packages_from_file(f)] File "/usr/lib/python2.5/site-packages/geet/package.py", line 60, in packages_from_file _copy_values(current, clss[1:], meta) File "/usr/lib/python2.5/site-packages/geet/package.py", line 33, in _copy_values for meta in (meta_dict[i] for i in from_list): File "/usr/lib/python2.5/site-packages/geet/package.py", line 33, in <genexpr> for meta in (meta_dict[i] for i in from_list): KeyError: 'sin' Уже с месяц используем в офисе. Все, что здесь писалось изменилось и не соответствует полученной системе. |