[devel] Х. Вынос сборочницы в пространство пользователя.

Igor Vlasenko vlasenko на imath.kiev.ua
Сб Мар 23 15:38:42 MSK 2019


Уважаемые господа!

Продолжаю цикл писем, посвященный предложениям по улучшению
нашей сборочницы.

Письма I - VIII можно посмотреть здесь:
  https://www.altlinux.org/Girar/Parallel

Я решил пока часть 2 Письма IХ пропустить,
вкратце, там планировал сказать, что на erlangish
commit = проверки целостности andalso merge .

Письмо Х. Вынос сборочницы в пространство пользователя.
-------------------------------------------------

В прошлом письме был ответ на вопрос "Кто виноват?" -
ответ - виновата недостаточная параллелизация работы
сборочницы, и, в особенности,
логическая ошибка в дизайне commit.

Пора ответить на вопрос "Что делать".

Что надо сделать?

1) исправление ошибок.

2. Вынос сборочницы в пространство пользователя.

Сборочница у нас одна, на живой системе.
Никто ее там чинить, отлаживать, оптимизировать не даст.

Но ее часть можно вынести в "userspace":

Аккуратно вырезать и опакетить
скрипты, связанные со сборкой, и скрипты, связанные с
проверками целостности, в отдельные независимые пакеты,
которые пользователи могут установить у себя
и запустить свою локальную сборочницу.

К примеру:

Делаем
$ gb-mk-task -b sisyphus[=/path/to/sisyphus] /path/to/task1dir /path/to/srpm1 \
  /path/to/gitdir2=commit del=name rebuild=name

получаем готовую task1dir, точно такую же, как если бы мы ее
создали через интерфейс gyle и скачали с team.alt.

$ gb-task-show /path/to/task1dir
id=task1dir locked=no shared=no fail_early=yes test_only=yes repo=sisyphus owner=viy state=NEW try=1 iter=1
 100:srpm=srpm1.src.rpm
 100:userid=viy
 100:pkgname=srpm1
 200:dir=/path/to/srpm1dir
 200:tag_name=1.2-alt1
 200:tag_id=f61de636d910096267d958a7189628e11651290a
 200:tag_author=Igor Vlasenko (ALT Linux Sisyphus) <viy на altlinux.org>
 200:fetched=2019-03-13T11:05:54
 200:userid=viy
 200:pkgname=dd
да, то что надо.

$ gb-build-check --arches="i586 x86_64" --hurry /path/to/task1dir
собирается так же, как и на сборочнице.

с другой консоли можно посмотреть статус
$ gb-task-ls  /path/to/task1dir
#/path/to/task1dir BUILDING [locked] #1 sisyphus srpm=dd-1.2-alt1.src.rpm ...

можно даже сделать свой форк сизифа и тестировать на нем:

$ gb-commit -b sisyphus /path/to/task1dir
   [--hardlink|--symlink|--copy] \
   --inrepo=/path/to/sisyphus1 \
   --outrepo=/path/to/sisyphus2

Что это даст?

Позволит отлаживать и улучшать код сборочницы,
не трогая саму сборочницу, что резко улучшит ее
тестируемость и поддерживаемость.

Позволит эксперименты.
Например, реализовать альтернативный алгоритм
или проверку, или опимизацию, прогнать через
бенчмарки, сравнить.

Даст удобный инструмент майнтайнерам.

Я тоже не собираюсь остаться в стороне.

 On Wed, Mar 20, 2019, Aleksey Novodvorsky wrote:
 Андрей, инициатива наказуема. :)
 Представьте план-проспект работ, за которые Вы могли бы взяться, с
 описанием светлого будущего по завершении.

У меня есть своя сборочница, но она сейчас встроена в
скрипты для автоматизации работы нод кластера
Automated Package Maintainance Cluster
[ https://watch.altlinux.org/pub/monitor/ ]

Я хочу ее выдрать оттуда, и сделать более универсальной,
чтобы она могла принимать на вход и tasks в формате girar,
как описанные выше гипотетические пока скрипты
gb-build-check
gb-commit

затем добавить туда node resource manager
и реализовать в них различные алгоритмы параллелизации
сборки тяжелых task'ов, о которых я писал.
  https://www.altlinux.org/Girar/Parallel

Получится альтернативная реализация
gb-build-check, которую по желанию можно будет
запускать на сборочнице вместо стандартной.


-- 

I V


Подробная информация о списке рассылки Devel