Girar/Internals: различия между версиями
Ender (обсуждение | вклад) Нет описания правки |
(Да допускается, допускается — уже года 3 как минимум, а то и больше.) |
||
(не показано 8 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
{{stub}} | {{stub}} | ||
[[Категория:git.alt]] | |||
Система состоит из двух основных компонент: <tt>girar</tt> и <tt>girar-builder</tt>. | |||
=== Girar === | === Girar === | ||
;girar: | ;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: | ;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/Справочник#Сборка пакетов| | Команды на формирование задания описаны в [[Git.alt/Справочник#Сборка пакетов|справочнике по git.alt]] (команды <tt>task</tt> и <tt>build</tt>). | ||
[[Git.alt/Справочник#Сборка пакетов|Задание]] состоит из нескольких стадий, которые выполняются в режиме | [[Git.alt/Справочник#Сборка пакетов|Задание]] состоит из нескольких стадий, которые выполняются в режиме | ||
"до первой ошибки" (то есть, когда одна из стадий завершается с ошибкой, остальные | |||
стадии не выполняются). | стадии не выполняются). Завершающие стадии обработки задания -- это закрытие ошибок в [https://bugzilla.altlinux.org/ bugzilla] и | ||
публикация обновлённых репозиториев. | |||
Процедура | Процедура обработки задания находится в [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> + | Сейчас усилиями {{man|at}} и {{man|ldv}} реализована архитектура <tt>girar-builder</tt> + удалённые сборочные узлы. | ||
<tt>girar-builder</tt> | <tt>girar-builder</tt> располагается на выделенном сервере и выполняет централизованные действия. | ||
централизованные действия. | |||
В каталоге | В каталоге [http://git.altlinux.org/people/ldv/packages/?p=girar-builder.git;a=tree;f=remote girar-builder/remote/] находятся программы, | ||
пакетов на | которые выполняются на удалённых узлах. В частности, для сборки | ||
пакетов на удалённом узле выполняется программа [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> является то, что | Характерной особенностью <tt>girar-builder</tt> является то, что центральный сервер не использует [[Hasher|хешер]] напрямую. | ||
[[Hasher|Хешер]] находятся на | [[Hasher|Хешер]] находятся на удалённых узлах. Когда нужно выполнить что-то с пмощью [[Hasher|хешера]], например, собрать пакет | ||
или проверить установку пакета, то <tt>girar-builder</tt> выполняет соответствующие действия на удалённых узлах. | |||
Удалённые узлы работают только с готовыми репозиториями, котрые готовит <tt>girar-builder</tt> на центральном сервере. | |||
Существует строго фиксированное количество удалённых узлов, для каждого репозитория и архитектуры. | |||
количество | |||
Например, существуют узлы с именами типа: | |||
* 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>'ов | |||
=== Источники === | === Источники === |
Текущая версия от 11:59, 23 апреля 2021
Система состоит из двух основных компонент: girar и girar-builder.
Girar
- girar (git)
- реализует ssh-интерфейс к git.altlinux.org.
Обрабатывает команды, описанные в Git.alt/Справочник и формирует задания для сборки.
Girar Builder
- Задание
- это каталог со специальной структурой (ближайшая аналогия -- каталог /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'ов не даёт гарантии наследования сборки.
Источники
Описание скомпилировано из: