GearRepo

01 сен 2011 14:20


31 августа я развернул на тестовом сервере первый экспериментальный релиз проекта под рабочим названием GearRepo. Веб-интерфейс доступен под адресом gear.truecrux.org .

GearRepo - это ресурс для разработчиков и майнтейнеров, где можно создавать Gear -репозитории исходного кода программ, собирать из них бинарные RPM -пакеты и формировать APT -репозитории, пригодные для использования в дистрибутивах на базе стабильных бранчей ALTLinux и/или нестабильной ветки Sisyphus .

↓↓↓↓↓↓↓↓

Цель проекта - упростить совместную работу разработчиков команды ALT и привлечь новичков к работе над пакетной базой Sisyphus. Проект позволит снизить порог вхождения для новых разработчиков, но не просто за счёт упрощения и автоматизирования рутинных операций, но также - документирования и разъяснения на пальцах каждого шага в работе (контекстные подсказки и т.д.)

Сейчас там крайне минимальный набор возможностей, скорее это даже просто эскиз/набросок проекта. Список того что планируется сделать был опубликован в рассылке Sisyphus@.

Сейчас работает:

 • Базовый просмотр gear-репозиториев. Примитивный git-браузер показывает все ветки, теги, последние 10 коммитов истории и дерево файлов (tree) последнего коммита. Тут работы непочатый край, но планируется сделать конфетку, в стиле gitg .

 • Регистрация пользователей (пока только по приглашениям для заинтересованных)

 • Небольшой howto по работе с сайтом

 • Загрузка своего публичного ssh-ключа

 • Создание gear-репозиториев (а также переименование и удаление)

 • RW доступ к своим gear-репозиториям через ssh

 • RO доступ ко всем gear-репозиториям через git

 • Сборка rpm-пакетов из gear-репозитория с отображением логов сборки в прямом эфире! К сожалению, результаты сборки пока забрать невозможно, но rpm-пакеты сохраняются и доступ к ним будет открыт с доработкой раздела управление apt-репозиториями apt-репозитории появляются здесь

 • Просмотр истории логов последних 10 сборок

Очень хочется привлечь текущих участников команды ALT к тестированию проекта и озвучиванию своих предложений и критики.

Техническая реализация

Созданы 3 контейнера openvz: сервер веб-приложения, сервер с gear/apt репозиториями, сборочный сервер

Общая схема выглядит так

Http-запрос клиента идёт на фронтенд apache, который затем проксируется на бэкенд twiggy , который передаёт данные в веб-приложение GearRepo::Web (на веб-фреймворке Dancer ).

Веб-сервер Twiggy используется по причине необходимости использования AnyEvent в веб-приложении.

Веб-приложение обрабатывает запрос и если в результате потребуется выполнить какое-либо действие с gear-репозиторием, например, создать/переименовать или выполнить сборку, формируется запрос на демона задач gearmand , который передаёт задачу в соответствующий worker (отдельный процесс), который асинхронно выполняет эту операцию и возвращает результат.

Использование сервера задач необходимо, поскольку не все задачи могут выполняться за приемлемое время ( ~ 1 сек) и следовательно должны выполняться асинхронно, при этом не требовать ресурсоёмких операций (как например, fork() на каждую новую задачу).

Worker'ы для выполнения операций подключаются по ssh к серверу (gear/apt или build-server). Используется одно постоянное ssh-соединение, в рамках которого мультиплексируются новые сеансы. Команды выполняются с правами непривилегированных пользователей, через специальный враппер команд, проверяющий корректность команд и выполняющих их.

Число сборочных серверов может неограниченно расширяться, они могут находиться где угодно. Пока я наладил только один, на картинке два, но это обман .) - ресурсов всё-таки маловато.

На данный момент используется быстрая и лёгкая СУБД SQLite, которая в принципе легко может быть заменена на любую другую если это потребуется.

Помимо веб-интерфейса есть также доступ по протоколам ssh и git. Для ssh используется также враппер команд, сходный gitolite. Для git развёрнут git-daemon, который обслуживает только RO-запросы к публичным репозиториям.

Также стоит упомянуть и сторону клиента. Сейчас строк в проекте написанных на JavaScript больше, чем кода серверной части на Perl .) Используется фреймворк JQuery. Пока раздумываю стоит ли искать фреймворк пользовательского интерфейса или обойтись своими силами. Для git-браузера обмен с сервером ведётся с использованием JSON, в котором передаются структуры с данными git-репозитория, а вывод формируется уже в браузере. Будет использоваться кэширование на стороне клиента, что позволит быстро и удобно работать с gear-репозиторием.

Теги: GearRepo ALT hacking

Обновлён: 2012-01-24 10:38


Комментарии (39)

gBopHuk

2012-11-10 20:46

Скажите, а при сборке Sisyphus_check проверяется?


crux

2012-11-13 20:42

Да sisyphus_check запускается, только отключены проверки gpg, packager и changelog.


gBopHuk

2012-11-18 14:49

Проверка changelog отключена для уменьшения порога вхождения?
А есть какая-нить рассылка данного проекта где можно вопросы по задавать?


crux

2012-11-18 19:24

Это потребовалось для того, чтобы была возможность указывать email в changelog отличный от *@altlinux.org.
Задавать вопросы можно в рассылках altlinux, например sisyphus@.


gBopHuk

2012-12-05 23:33

А планируются ли в apt-репозиторих SRPMS каталоги?
Хотя с ними много места будет занимать репозиторий наверно


crux

2012-12-10 21:08

Не думал, что кому-то может потребоваться SRPM. Но можно добавить если очень нужно.


gBopHuk

2012-12-21 18:45

Да нет, наверно , не надо. Сейчас же можно просто git clone сделать.

Я тут сейчас поймал такую ошибку

fatal: write error: No space left on device
install: writing `/tmp/.private/buildbot/gear.yi53Y8TN/out/kernel-image.spec': No space left on device
install: failed to extend `/tmp/.private/buildbot/gear.yi53Y8TN/out/kernel-image.spec': No space left on device

Это места не хватает на сервере, как я понимаю?


crux

2012-12-21 23:35

Да, не хватало места на /tmp
Исправил


gBopHuk

2013-01-19 22:12

А можно ли как-нибудь остановить сборку , если случайно начал собирать не то?


crux

2013-01-20 23:03

Пока нет такой возможности, к сожалению.


Ivan Zakharyaschev

2013-02-06 02:07

Спасибо за полезный инструмент и ресурс!

У меня не получается как-либо управлять моими apt-репозиториями.

Например, я не могу понять, можно ли удалить старые ненужные релизы пакета из репозитория: в http://git.truecrux.org/overlays/gr/imz/default/p6/i586/RPMS.classic/ два релиза пакета btrfs-progs (в ALTовском Sisyphus такого не бывает), но более старый скорее только мешается.


crux

2013-02-07 17:01

Иван, возможность удалять старые релизы пока не реализована. Особой проблемы в этом нет, т.к. apt всё равно выберет самую старшую версию пакета.
Как появится время, постараюсь доработать управление бинарными репозиториями.


gBopHuk

2013-02-21 14:02

А сколько можно максимум создать gear/apt репозиториев


crux

2013-02-22 07:19

Ограничений нет


gBopHuk

2013-02-23 14:52

Не могу создать apt-репозиторий - выскакивает ошибка. Gear-репозитории при этом создаются


gBopHuk

2013-05-14 14:07

Как проект поживает? Планируется ли развите?


sb

2013-05-23 16:49

Посмотреть скринкаст не получилось, причем даже при переходе на ютуб кажет до 1:47 и останавливается (будто бы эта веха уже есть окончание скринкаста).


sb

2013-05-23 17:09

Ложная отчасти тревога. Проблема у гугла с ютубом.
Как пожелание. Хорошо бы продублировать видео ещё где-нибудь на такой вот случай.


gBopHuk

2013-08-05 21:40

P7 то будет?


crux

2013-08-05 22:00

Добавил p7


gBopHuk

2013-08-09 15:03

Спасибо


gBopHuk

2013-09-14 15:38

Поймал, какой-то баг: Невозможно выбрать тэг на сборку в репозитории "compton", выпадающий список пустой.


gBopHuk

2013-11-11 22:51

Простите, а проект заглох? Задания на сборку не выполняются


crux

2013-11-15 21:58

Оживил


gBopHuk

2013-11-16 13:00

Спасибо =))) Как ваши планы по развитию?


crux

2013-11-17 22:08

Пока просто буду стараться поддерживать в работоспособном состоянии.


gBopHuk

2014-02-04 13:05

Скажите, а можно ли push-нуть без shh, с использованием логина и пароля, или может можно использовать несколько ssh-ключей?


crux

2014-02-06 11:06

На оба вопроса ответ - нет.


gBopHuk

2014-02-08 14:43

Не получается пушнуть : acces denied or repository not exported

ssh gr - результат timeout

клонирование работает


crux

2014-02-08 20:32

Поправил, проверьте.


gBopHuk

2014-02-09 15:25

ssh: PTY allocation request failed on channel 0
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_MONETARY = "ru_RU.UTF-8",
LC_NUMERIC = "ru_RU.UTF-8",
LC_TIME = "ru_RU.UTF-8",
LANG = "C"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Connection to git.truecrux.org closed.


crux

2014-02-09 17:42

а git push работает?


gBopHuk

2014-02-09 21:00

Ура Pushиться =))) Спасибо


gBopHuk

2014-04-06 11:38

Сломалося чего-то =)))
Failed to fetch http://192.168.0.111:82/overlays/gr/gBopHuk/ruby/Sisyphus/noarch/base/pkglist.classic 404 Not Found


gBopHuk

2014-04-07 13:49

Вроде всё в порядке - с репозиториями намудрил =))) Простите !


gBopHuk

2014-05-15 21:51

Чего-то стопорится в начале сборки

15.05.14 21:48:21: Added build task to queue...
15.05.14 21:48:21: Starting build...


gBopHuk

2014-07-01 14:54

Теперь ошибка при загрузке данных из gear-репозитория.
При входе в любой gear-репозиторий


gBopHuk

2014-08-08 17:50

Опять ошибки при операциях с репозиториями


gBopHuk

2015-02-17 12:19

чего-то опять сборки стопоряться в самом начале


Оставить комментарий