[devel] следующий шаг интеграции prometheus2.0 и альтовой инфраструктуры

Igor Zubkov igor.zubkov на gmail.com
Пн Дек 14 17:16:45 UTC 2009


Hi!

В текущий момент обновление одного бранча на prometheus.altlinux.org
достаточно ёмкая задача по времени (выдержка из лога):
import src.rpm's
2009-12-14 05:15:05 +0300
2009-12-14 05:23:14 +0300
import i586.rpm's
2009-12-14 05:23:14 +0300
2009-12-14 05:32:59 +0300
import noarch.rpm's
2009-12-14 05:32:59 +0300
2009-12-14 05:40:23 +0300
import x86_64.rpm's
2009-12-14 05:40:23 +0300
2009-12-14 05:49:32 +0300

Итого, 34 минуты. А ещё надо ACLи обновить:
import acls
2009-12-14 05:49:32 +0300
2009-12-14 05:51:48 +0300

Ещё две минуты. Всего 36 минут. И это только для одного бранча (в
данном случае -- Сизиф). А надо ещё 5 таких обработать. Это слишком не
рентабельно по скорости и потребляемым ресурсам. И банально просто не
удобно т.к. раньше чем через сутки не видно изменений на сайте (это
относится к пакетам только, ACL'и обновляется каждый час).

Предлагаю доделать к сборочнице немного доп.функций для лёгкой
интеграции с prometheus2.0:
1) в папке с архивом сборки (или будет более правильно, задания)
(например, http://git.altlinux.org/tasks/archive/done/17030/) добавить
файл prometheus.log для парсинга prometehus2.0. О формате чуть позже.
2) после успешной сборки задания, делать pingback на сайт
prometheus.a.o. примерно вот так:
wget -c "http://prometheus.altlinux.org/pingback/номерзадания/prometheus.status"
далее, если в prometheus.status написано "ok" больше ничего не делать.
В противном случае, прийти через (к примеру) час.

О формате prometheus.log:
1) одна строка -- одна команда
2) команд сколько угодно
3) команды всегда большими

Формат prometheus.log для парсинга:
1) удаление пакета:
DELETE <бранч> <поле имя (Name:) из src.rpm> <кем (логин)>
Пример:
DELETE sisyphus nexuiz icesik

2) добавление нового пакета в репозиторий:
NEW <бранч> <поле имя (Name:) из src.rpm> <version> <release> <кем (логин)>
Пример:
NEW sisyphus nexuiz 2.5.2 alt1 icesik

Так как зная имя src.rpm нельзя быстро узнать список пакетов которые
собраны из него, то придётся их указывать:
PACKAGE <бранч> <поле имя (Name:) из src.rpm> <arch> <имя бинарного
пакета (поле Name: из него)>
Пример:
PACKAGE sisyphus nexuiz i586 nexuiz-client-sdl
PACKAGE sisyphus nexuiz i586 nexuiz-client-glx
PACKAGE sisyphus nexuiz i586 nexuiz-client-common
PACKAGE sisyphus nexuiz i586 nexuiz-server

3) обновление пакета:
UPDATE <бранч> <поле имя (Name:) из src.rpm> <version> <release> <кем (логин)>
Пример:
UPDATE sisyphus nexuiz 2.5.2 alt1 icesik

Так как зная имя src.rpm нельзя быстро узнать список пакетов которые
собраны из него, то придётся их указывать:
PACKAGE <бранч> <поле имя (Name:) из src.rpm> <arch> <имя бинарного
пакета (поле Name: из него)>
Пример:
PACKAGE sisyphus nexuiz i586 nexuiz-client-sdl
PACKAGE sisyphus nexuiz i586 nexuiz-client-glx
PACKAGE sisyphus nexuiz i586 nexuiz-client-common
PACKAGE sisyphus nexuiz i586 nexuiz-server

4) изменение ACL:
ACL <branch> <package name> (ADD|DELETE) login
Пример:
ACL sisyphus nexuiz ADD icesik

Это черновик того что охота (скорее я всё таки что-то забыл). Ну как?
Изменения в prometheus2.0 для поддержки такого я готов написать.
Осталось найти того кто напишет такое для girar.

Предлагаю обсудить это всё.

-- 
Igor Zubkov
http://hi.im/ice


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