Girar/Internals
Материал из ALT Linux Wiki
Ender (обсуждение | вклад) |
Ender (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
{{stub}} | {{stub}} | ||
- | |||
Есть два главных компонента системы: <tt>girar</tt> и <tt>girar-builder</tt>. | Есть два главных компонента системы: <tt>girar</tt> и <tt>girar-builder</tt>. | ||
- | ;girar:это то что обслуживает ssh доступ к git.altlinux.org. | + | === Girar === |
- | ;girar-builder:забирает | + | ;girar:это то что обслуживает ssh доступ к git.altlinux.org. |
+ | Обрабатывает команды, описанные в [[Git.alt/Справочник]] и формирует [[Git.alt/Справочник#Сборка пакетов|задания]] для сборки. | ||
+ | |||
+ | === Girar Builder === | ||
+ | ;girar-builder:забирает [[Git.alt/Справочник#Сборка пакетов|задания]] на сборку. | ||
+ | |||
;Задание:это каталог со специальной структурой (ближайшая аналогия -- каталог /proc/$pid).<br>Структура каталога описана в файле girar-builder/TASK. Описание может быть неполным или неточным, но оно дает правильное первоначальное представление. | ;Задание:это каталог со специальной структурой (ближайшая аналогия -- каталог /proc/$pid).<br>Структура каталога описана в файле girar-builder/TASK. Описание может быть неполным или неточным, но оно дает правильное первоначальное представление. | ||
- | + | Команды на формирование задания описаны в [[Git.alt/Справочник#Сборка пакетов|задания]] (команда <tt>task</tt>). | |
+ | |||
+ | [[Git.alt/Справочник#Сборка пакетов|Задание]] состоит из нескольких стадий, которые выполняются в режиме | ||
<tt>sh -e</tt> (то есть, когда одна из стадий завершается с ошибкой, остальные | <tt>sh -e</tt> (то есть, когда одна из стадий завершается с ошибкой, остальные | ||
стадии не выполняются). Последние стадии задания -- это копирование | стадии не выполняются). Последние стадии задания -- это копирование | ||
Строка 14: | Строка 20: | ||
Процедура сборки задания находится в <tt>girar-builder/gb-run-task</tt>. | Процедура сборки задания находится в <tt>girar-builder/gb-run-task</tt>. | ||
- | + | ==== Процедура сборки задания ==== | |
- | + | Сейчас усилиями ldv реализована архитектура <tt>girar-builder</tt> + <tt>nodes</tt>. | |
- | программы, которые выполняются на | + | <tt>girar-builder</tt> находится на одной машине и выполняет всякие |
+ | централизованные действия. | ||
+ | |||
+ | В каталоге <tt>girar-builder/remote/</tt> лежат программы, которые выполняются на ''remote nodes''. В частности, для сборки | ||
пакетов на ноде выполняется программа <tt>girar-builder/remote/gb-remote-build</tt>. | пакетов на ноде выполняется программа <tt>girar-builder/remote/gb-remote-build</tt>. | ||
+ | |||
+ | Характерной особенностью <tt>girar-builder</tt> является то, что у него нету своего [[Hasher|хешера]]. | ||
+ | [[Hasher|Хешер]] находятся на ''remote nodes''. Когда нужно что-то от хешера, например сборка или проверка | ||
+ | установки, то <tt>girar-builder</tt> стучится на ''remote nodes'' и там всё делает. | ||
+ | |||
+ | Зато <tt>girar-builder</tt> умеет генерировать репозитарии, а ''remote nodes'' могут | ||
+ | работать только с готовыми репозитарями. Существует строго ограниченное | ||
+ | количество ''remote nodes'', по имени репозитария и по архитектуре. | ||
+ | |||
+ | То есть существуют ноды типа: | ||
+ | * build_sisyphus_i586 | ||
+ | * build_sisyphus_x86_64 | ||
+ | * build_50_i586 | ||
+ | * build_50_x86_64 | ||
+ | |||
+ | Как распределены ноды между физическим железом это никто не знает. | ||
+ | Предполагается что они каким-то образом балансируют нагрузку. | ||
+ | |||
+ | Есть ещё одна проблема: на ноды приходится целиком копировать временный | ||
+ | репозитарий. Сейчас этот репозитарий делается симлинками. Это | ||
+ | накладывает дополнительное условие: репозитарий на <tt>girar-builder</tt> и | ||
+ | репозитарий на нодах должен иметь одинаковый путь. Потому что симлинки | ||
+ | туда смотрят. | ||
+ | |||
+ | ==== Сборка из source rpm ==== | ||
+ | Недавно была добавлена из source rpm через <tt>girar</tt> (команда [[Git.alt/Справочник#build|build srpm]], анонс: http://lists.altlinux.org/pipermail/devel/2009-May/170472.html). | ||
+ | |||
+ | При сборке из source rpm происходят проверки, запрещающие сборку, если предыдущая версия была собрана из [[gear]]. | ||
+ | |||
+ | Обоснование данной проверки: | ||
+ | Изначально предполагалось, что переход на сборку из [[git]] позволит проверять | ||
+ | наследование сборки (от предыдущей сборки) естественноым путём, что | ||
+ | упрощает совместную разработку и [[NMU]]. | ||
+ | |||
+ | К сожалению, <tt>srpm</tt> не позволяют реализовать такую проверку (точнее говоря, | ||
+ | можно реализовать приблизительную проверку, например, путём сравнения | ||
+ | <tt>%changelog</tt>'ов). | ||
+ | |||
+ | По этой причине сборка пакета из <tt>srpm</tt> после сборки этого пакета из [[git]] | ||
+ | не допускается. | ||
+ | |||
+ | |||
+ | === Источники === | ||
+ | Описание скомпилировано из: | ||
+ | * http://lists.altlinux.org/pipermail/devel/2009-May/170534.html | ||
+ | * http://lists.altlinux.org/pipermail/devel/2009-May/170726.html | ||
+ | * http://lists.altlinux.org/pipermail/devel/2009-May/170478.html |
Версия 08:30, 18 мая 2009
Есть два главных компонента системы: girar и girar-builder.
Содержание |
Girar
- girar
- это то что обслуживает ssh доступ к git.altlinux.org.
Обрабатывает команды, описанные в Git.alt/Справочник и формирует задания для сборки.
Girar Builder
- girar-builder
- забирает задания на сборку.
- Задание
- это каталог со специальной структурой (ближайшая аналогия -- каталог /proc/$pid).
Структура каталога описана в файле girar-builder/TASK. Описание может быть неполным или неточным, но оно дает правильное первоначальное представление.
Команды на формирование задания описаны в задания (команда task).
Задание состоит из нескольких стадий, которые выполняются в режиме sh -e (то есть, когда одна из стадий завершается с ошибкой, остальные стадии не выполняются). Последние стадии задания -- это копирование собранных пакетов в репозитарий и перегенерация репозитария.
Процедура сборки задания находится в girar-builder/gb-run-task.
Процедура сборки задания
Сейчас усилиями ldv реализована архитектура girar-builder + nodes. girar-builder находится на одной машине и выполняет всякие централизованные действия.
В каталоге girar-builder/remote/ лежат программы, которые выполняются на remote nodes. В частности, для сборки пакетов на ноде выполняется программа girar-builder/remote/gb-remote-build.
Характерной особенностью girar-builder является то, что у него нету своего хешера. Хешер находятся на remote nodes. Когда нужно что-то от хешера, например сборка или проверка установки, то girar-builder стучится на remote nodes и там всё делает.
Зато girar-builder умеет генерировать репозитарии, а remote nodes могут работать только с готовыми репозитарями. Существует строго ограниченное количество remote nodes, по имени репозитария и по архитектуре.
То есть существуют ноды типа:
- build_sisyphus_i586
- build_sisyphus_x86_64
- build_50_i586
- build_50_x86_64
Как распределены ноды между физическим железом это никто не знает. Предполагается что они каким-то образом балансируют нагрузку.
Есть ещё одна проблема: на ноды приходится целиком копировать временный репозитарий. Сейчас этот репозитарий делается симлинками. Это накладывает дополнительное условие: репозитарий на girar-builder и репозитарий на нодах должен иметь одинаковый путь. Потому что симлинки туда смотрят.
Сборка из source rpm
Недавно была добавлена из source rpm через girar (команда build srpm, анонс: http://lists.altlinux.org/pipermail/devel/2009-May/170472.html).
При сборке из source rpm происходят проверки, запрещающие сборку, если предыдущая версия была собрана из gear.
Обоснование данной проверки: Изначально предполагалось, что переход на сборку из git позволит проверять наследование сборки (от предыдущей сборки) естественноым путём, что упрощает совместную разработку и NMU.
К сожалению, srpm не позволяют реализовать такую проверку (точнее говоря, можно реализовать приблизительную проверку, например, путём сравнения %changelog'ов).
По этой причине сборка пакета из srpm после сборки этого пакета из git не допускается.
Источники
Описание скомпилировано из: