Girar/Internals

Материал из ALT Linux Wiki

< Girar(Различия между версиями)
Перейти к: навигация, поиск
(Процедура сборки задания)
 
(7 промежуточных версий не показаны.)
Строка 1: Строка 1:
{{stub}}
{{stub}}
-
Есть два главных компонента системы: <tt>girar</tt> и <tt>girar-builder</tt>.
+
[[Категория:git.alt]]
 +
 
 +
Система состоит из двух основных компонент: <tt>girar</tt> и <tt>girar-builder</tt>.
=== Girar ===
=== Girar ===
-
;girar:это то что обслуживает ssh доступ к git.altlinux.org.
+
;girar ([http://git.altlinux.org/people/ldv/packages/?p=girar.git;a=summary git])
 +
:реализует ssh-интерфейс к git.altlinux.org.
Обрабатывает команды, описанные в [[Git.alt/Справочник]] и формирует [[Git.alt/Справочник#Сборка пакетов|задания]] для сборки.
Обрабатывает команды, описанные в [[Git.alt/Справочник]] и формирует [[Git.alt/Справочник#Сборка пакетов|задания]] для сборки.
=== Girar Builder ===
=== Girar Builder ===
-
;girar-builder:забирает [[Git.alt/Справочник#Сборка пакетов|задания]] на сборку.
+
;girar-builder ([http://git.altlinux.org/people/ldv/packages/?p=girar-builder.git;a=summary git])
 +
:обрабатывает сформированные [[Git.alt/Справочник#Сборка пакетов|задания]] на сборку.
-
;Задание:это каталог со специальной структурой (ближайшая аналогия -- каталог /proc/$pid).<br>Структура каталога описана в файле girar-builder/TASK. Описание может быть неполным или неточным, но оно дает правильное первоначальное представление.
+
;Задание:это каталог со специальной структурой (ближайшая аналогия -- каталог /proc/$pid).<br>
 +
Структура каталога описана в файле [http://git.altlinux.org/people/ldv/packages/?p=girar-builder.git;a=blob_plain;f=TASK;hb=HEAD girar-builder/TASK].
 +
Это описание может быть неполным или немного неточным, но оно дает правильное первоначальное представление.
-
Команды на формирование задания описаны в [[Git.alt/Справочник#Сборка пакетов|задания]] (команда <tt>task</tt>).
+
Команды на формирование задания описаны в [[Git.alt/Справочник#Сборка пакетов|справочнике по git.alt]] (команды <tt>task</tt> и <tt>build</tt>).
[[Git.alt/Справочник#Сборка пакетов|Задание]] состоит из нескольких стадий, которые выполняются в режиме
[[Git.alt/Справочник#Сборка пакетов|Задание]] состоит из нескольких стадий, которые выполняются в режиме
-
<tt>sh -e</tt> (то есть, когда одна из стадий завершается с ошибкой, остальные
+
"до первой ошибки" (то есть, когда одна из стадий завершается с ошибкой, остальные
-
стадии не выполняются).  Последние стадии задания -- это копирование
+
стадии не выполняются).  Завершающие стадии обработки задания -- это закрытие ошибок в [https://bugzilla.altlinux.org/ bugzilla] и
-
собранных пакетов в репозитарий и перегенерация репозитария.
+
публикация обновлённых репозиториев.
-
Процедура сборки задания находится в <tt>girar-builder/gb-run-task</tt>.
+
Процедура обработки задания находится в [http://git.altlinux.org/people/ldv/packages/?p=girar-builder.git;a=blob;f=gb-run-task girar-builder/gb-run-task].
==== Процедура сборки задания ====
==== Процедура сборки задания ====
-
Сейчас усилиями ldv реализована архитектура <tt>girar-builder</tt> + <tt>nodes</tt>.
+
Сейчас усилиями {{man|at}} и {{man|ldv}} реализована архитектура <tt>girar-builder</tt> + удалённые сборочные узлы.
-
<tt>girar-builder</tt> находится на одной машине и выполняет всякие
+
<tt>girar-builder</tt> располагается на выделенном сервере и выполняет централизованные действия.
-
централизованные действия.
+
-
В каталоге <tt>girar-builder/remote/</tt> лежат программы, которые выполняются на ''remote nodes''. В частности, для сборки
+
В каталоге [http://git.altlinux.org/people/ldv/packages/?p=girar-builder.git;a=tree;f=remote girar-builder/remote/] находятся программы,
-
пакетов на ноде выполняется программа <tt>girar-builder/remote/gb-remote-build</tt>.
+
которые выполняются на удалённых узлах. В частности, для сборки
 +
пакетов на удалённом узле выполняется программа [http://git.altlinux.org/people/ldv/packages/?p=girar-builder.git;a=blob;f=remote/gb-remote-build girar-builder/remote/gb-remote-build].
-
Характерной особенностью <tt>girar-builder</tt> является то, что у него нету своего [[Hasher|хешера]].
+
Характерной особенностью <tt>girar-builder</tt> является то, что центральный сервер не использует [[Hasher|хешер]] напрямую.
-
[[Hasher|Хешер]] находятся на ''remote nodes''. Когда нужно что-то от хешера, например сборка или проверка
+
[[Hasher|Хешер]] находятся на удалённых узлах. Когда нужно выполнить что-то с пмощью [[Hasher|хешера]], например, собрать пакет
-
установки, то <tt>girar-builder</tt> стучится на ''remote nodes'' и там всё делает.
+
или проверить установку пакета, то <tt>girar-builder</tt> выполняет соответствующие действия на удалённых узлах.
-
Зато <tt>girar-builder</tt> умеет генерировать репозитарии, а ''remote nodes'' могут
+
Удалённые узлы работают только с готовыми репозиториями, котрые готовит <tt>girar-builder</tt> на центральном сервере.
-
работать только с готовыми репозитарями.  Существует строго ограниченное
+
Существует строго фиксированное количество удалённых узлов, для каждого репозитория и архитектуры.
-
количество ''remote nodes'', по имени репозитария и по архитектуре.
+
-
То есть существуют ноды типа:
+
Например, существуют узлы с именами типа:
* build_sisyphus_i586
* build_sisyphus_i586
* build_sisyphus_x86_64
* build_sisyphus_x86_64
Строка 42: Строка 47:
* build_50_x86_64
* build_50_x86_64
-
Как распределены ноды между физическим железом это никто не знает.
+
Эти узлы каким-то образом рассредоточены по физическим серверам.
-
Предполагается что они каким-то образом балансируют нагрузку.
+
Предполагается, что они каким-то образом балансируют нагрузку.
-
Есть ещё одна проблема: на ноды приходится целиком копировать временный
+
Есть ещё одна особенность: на удалённые узлы приходится целиком копировать временный
репозитарий.  Сейчас этот репозитарий делается симлинками.  Это
репозитарий.  Сейчас этот репозитарий делается симлинками.  Это
накладывает дополнительное условие: репозитарий на <tt>girar-builder</tt> и
накладывает дополнительное условие: репозитарий на <tt>girar-builder</tt> и
-
репозитарий на нодах должен иметь одинаковый путь.  Потому что симлинки
+
репозитарий на удалённых узлах должен быть доступен по одному и тому же пути.
-
туда смотрят.
+
==== Сборка из source rpm ====
==== Сборка из source rpm ====
-
Недавно была добавлена из source rpm через <tt>girar</tt> (команда [[Git.alt/Справочник#build|build srpm]], анонс: http://lists.altlinux.org/pipermail/devel/2009-May/170472.html).
+
Недавно была добавлена сборка из source rpm через <tt>girar</tt> (команда [[Git.alt/Справочник#build|build srpm]], анонс: http://lists.altlinux.org/pipermail/devel/2009-May/170472.html).
При сборке из source rpm происходят проверки, запрещающие сборку, если предыдущая версия была собрана из [[gear]].  
При сборке из source rpm происходят проверки, запрещающие сборку, если предыдущая версия была собрана из [[gear]].  
Строка 58: Строка 62:
Обоснование данной проверки:
Обоснование данной проверки:
Изначально предполагалось, что переход на сборку из [[git]] позволит проверять
Изначально предполагалось, что переход на сборку из [[git]] позволит проверять
-
наследование сборки (от предыдущей сборки) естественноым путём, что
+
наследование сборки (от предыдущей сборки) естественным путём, что
упрощает совместную разработку и [[NMU]].
упрощает совместную разработку и [[NMU]].
-
К сожалению, <tt>srpm</tt> не позволяют реализовать такую проверку (точнее говоря,
+
К сожалению, <tt>srpm</tt> не позволяют реализовать такую проверку достоверно.
-
можно реализовать приблизительную проверку, например, путём сравнения
+
Реализованная проверка наследования <tt>%changelog</tt>'ов не даёт гарантии наследования сборки.
-
<tt>%changelog</tt>'ов).
+
По этой причине сборка пакета из <tt>srpm</tt> после сборки этого пакета из [[git]]
По этой причине сборка пакета из <tt>srpm</tt> после сборки этого пакета из [[git]]
не допускается.
не допускается.
-
 
=== Источники ===
=== Источники ===

Текущая версия на 07:50, 13 сентября 2011

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

Система состоит из двух основных компонент: girar и girar-builder.

Содержание

Girar

girar (git)
реализует ssh-интерфейс к git.altlinux.org.

Обрабатывает команды, описанные в Git.alt/Справочник и формирует задания для сборки.

Girar Builder

girar-builder (git)
обрабатывает сформированные задания на сборку.
Задание
это каталог со специальной структурой (ближайшая аналогия -- каталог /proc/$pid).

Структура каталога описана в файле girar-builder/TASK. Это описание может быть неполным или немного неточным, но оно дает правильное первоначальное представление.

Команды на формирование задания описаны в справочнике по git.alt (команды task и build).

Задание состоит из нескольких стадий, которые выполняются в режиме "до первой ошибки" (то есть, когда одна из стадий завершается с ошибкой, остальные стадии не выполняются). Завершающие стадии обработки задания -- это закрытие ошибок в bugzilla и публикация обновлённых репозиториев.

Процедура обработки задания находится в girar-builder/gb-run-task.

Процедура сборки задания

Сейчас усилиями at@ и ldv@ реализована архитектура girar-builder + удалённые сборочные узлы. girar-builder располагается на выделенном сервере и выполняет централизованные действия.

В каталоге girar-builder/remote/ находятся программы, которые выполняются на удалённых узлах. В частности, для сборки пакетов на удалённом узле выполняется программа girar-builder/remote/gb-remote-build.

Характерной особенностью girar-builder является то, что центральный сервер не использует хешер напрямую. Хешер находятся на удалённых узлах. Когда нужно выполнить что-то с пмощью хешера, например, собрать пакет или проверить установку пакета, то girar-builder выполняет соответствующие действия на удалённых узлах.

Удалённые узлы работают только с готовыми репозиториями, котрые готовит girar-builder на центральном сервере. Существует строго фиксированное количество удалённых узлов, для каждого репозитория и архитектуры.

Например, существуют узлы с именами типа:

  • 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 не допускается.

Источники

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

 
Личные инструменты