Girar/Internals: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
{{stub}}
{{stub}}
Есть два главных компонента системы: <tt>girar</tt> и <tt>girar-builder</tt>.


Есть два главных компонента системы: <tt>girar</tt> и <tt>girar-builder</tt>.
=== Girar ===
;girar:это то что обслуживает ssh доступ к git.altlinux.org.
Обрабатывает команды, описанные в [[Git.alt/Справочник]] и формирует [[Git.alt/Справочник#Сборка пакетов|задания]] для сборки.
 
=== Girar Builder ===
;girar-builder:забирает [[Git.alt/Справочник#Сборка пакетов|задания]] на сборку.


;girar:это то что обслуживает ssh доступ к git.altlinux.org. <tt>girar</tt> формирует ''задания'' для сборки.
;girar-builder:забирает ''задания'' на сборку.
;Задание:это каталог со специальной структурой (ближайшая аналогия -- каталог /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>.


У <tt>girar-builder</tt> нету своего хешера. Хешер существует на ноде, которая
==== Процедура сборки задания ====
называется $remote_host. В каталоге <tt>girar-builder/remote/</tt> лежат
Сейчас усилиями ldv реализована архитектура <tt>girar-builder</tt> + <tt>nodes</tt>.
программы, которые выполняются на $remote_host. В частности, для сборки
<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

Версия от 11:30, 18 мая 2009

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Есть два главных компонента системы: 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 не допускается.


Источники

Описание скомпилировано из: