GearRepo: различия между версиями
Tora-bora (обсуждение | вклад) |
Нет описания правки |
||
(не показаны 33 промежуточные версии 5 участников) | |||
Строка 1: | Строка 1: | ||
{{ | {{review | ||
==GearRepo== | |Title = GearRepo — ресурс для разработчиков и майнтейнеров | ||
|Annotation = GearRepo — это ресурс для разработчиков и майнтейнеров, где можно создавать Gear-репозитории исходного кода программ, собирать из них бинарные RPM-пакеты и формировать APT-репозитории | |||
'''GearRepo''' | |Author = ALT Club | ||
создавать Gear-репозитории исходного кода программ, собирать из них | |Tag = сборка | ||
|Section = технологии | |||
|Issue = pilot | |||
}} | |||
{{review-nav | |||
|link=http://gear.truecrux.org/#!/ GearRepo | |||
}} | |||
===GearRepo=== | |||
'''GearRepo''' — это ресурс для разработчиков и майнтейнеров, где можно создавать Gear-репозитории исходного кода программ, собирать из них | |||
бинарные RPM-пакеты и формировать APT-репозитории, пригодные для | бинарные RPM-пакеты и формировать APT-репозитории, пригодные для | ||
использования в дистрибутивах на базе стабильных бранчей | использования в дистрибутивах на базе стабильных бранчей ALT Linux | ||
и/или нестабильной ветки Sisyphus.<br> | и/или нестабильной ветки Sisyphus.<br> | ||
На данный момент GearRepo находится в процессе разработки. | На данный момент GearRepo находится в процессе разработки. | ||
Хочется привлечь текущих участников команды ALT к тестированию проекта и озвучиванию своих предложений и критики. | Хочется привлечь текущих участников команды ALT к тестированию проекта и озвучиванию своих предложений и критики. | ||
==От первого лица== | ===От первого лица=== | ||
Здравствуйте, Владимир! | Здравствуйте, Владимир! | ||
В рамках подготовки роллинг-релиз журнала ALT-review хотелось бы задать Вам | В рамках подготовки роллинг-релиз журнала ALT-review хотелось бы задать Вам | ||
несколько вопросов относительно ресурса GearRepo и не только. | несколько вопросов относительно ресурса GearRepo и не только. | ||
На портале http://gear.truecrux.org есть пояснение о назначении ресурса, также там размещен практически исчерпывающий | На портале http://gear.truecrux.org есть пояснение о назначении ресурса, также там размещен скринкаст — практически исчерпывающий ответ на вопрос о том, как работать с ресурсом. | ||
Однако, хотелось бы детальнее осветить создание этого ресурса и того,что с ним связано. | Однако, хотелось бы детальнее осветить создание этого ресурса и того, что с ним связано. | ||
Ниже приведены вопросы, | Ниже приведены вопросы, но хотелось бы оставить за собой право | ||
задать дополнительные позже (если такие появятся). Также сами ответы | задать дополнительные позже (если такие появятся). Также сами ответы | ||
Вы сможете найти на вики a.o (в категории ALT-review) до анонса статьи | Вы сможете найти на вики a.o (в категории ALT-review) до анонса статьи | ||
и сообщить о необходимых корректировках. | и сообщить о необходимых корректировках. | ||
---- | ---- | ||
:[[Image: | [[Image:torabora.jpg|90px]] | ||
| |||
[[Image:crux.jpg|90px]] <br>Вопросы ('''Q'''): Михаил Радюк '''torabora''' | |||
| |||
Ответы ('''A'''): Владимир Леттиев '''crux''' | |||
---- | ---- | ||
'''Q:''' Скажите, это те самые "карманы", обсуждение которых давно ведется? | '''Q:''' Скажите, это те самые "карманы", обсуждение которых давно ведется? | ||
Строка 37: | Строка 49: | ||
После завершения вёрстки текущего дизайна сайта, я также делал анонс в G+ | После завершения вёрстки текущего дизайна сайта, я также делал анонс в G+ | ||
(подавляющее большинство моих друзей в нём | (подавляющее большинство моих друзей в нём это участники ALT Linux Team) для | ||
проведения тестирования. | проведения тестирования. | ||
Строка 45: | Строка 57: | ||
(вспоминаем переезд с srpm на gear). | (вспоминаем переезд с srpm на gear). | ||
---- | ---- | ||
'''Q:''' На какой основе он создан | '''Q:''' На какой основе он создан — при чьей-то поддержке или самостоятельно? | ||
'''A:''' Сделан он самостоятельно, прежде всего для создания комфортного | '''A:''' Сделан он самостоятельно, прежде всего для создания комфортного | ||
Строка 62: | Строка 74: | ||
легко. | легко. | ||
---- | ---- | ||
'''Q:''' Глупый наверное вопрос | '''Q:''' Глупый наверное вопрос — на чем он написан и почему? | ||
'''A:''' Кое-какие | '''A:''' Кое-какие технические детали реализации я опубликовал | ||
http://blog.truecrux.org/post/xiii | http://blog.truecrux.org/post/xiii | ||
Строка 73: | Строка 85: | ||
'''A:''' Фичи добавляются по мере необходимости. | '''A:''' Фичи добавляются по мере необходимости. | ||
---- | ---- | ||
'''Q:''' | '''Q:''' Насколько стабильным и надежным будет ресурс, когда будет запущен в качестве "боевого"? | ||
'''A:''' Всё зависит от числа пользователей. Основная нагрузка идёт на сборочные | '''A:''' Всё зависит от числа пользователей. Основная нагрузка идёт на сборочные | ||
Строка 88: | Строка 100: | ||
'''A:''' Нет. В теории он должет переехать на домен второго уровня, имя которому | '''A:''' Нет. В теории он должет переехать на домен второго уровня, имя которому | ||
пока не придумалось. Сейчас просто используется | пока не придумалось. Сейчас просто используется существующий личный домен. | ||
---- | ---- | ||
'''Q:''' | '''Q:''' Спасибо! | ||
'''A:''' Вам спасибо. | '''A:''' Вам спасибо. | ||
---- | ---- | ||
==Цель проекта== | |||
Цель проекта | ===Цель проекта=== | ||
==Возможности== | Цель проекта — упростить совместную работу разработчиков команды ALT и привлечь новичков к работе над пакетной базой Sisyphus. Проект позволит снизить порог вхождения для новых разработчиков, но не только за счёт упрощения и автоматизации рутинных операций, но и документирования, разъяснения на пальцах каждого шага в работе (контекстные подсказки и т.д.) | ||
===Возможности=== | |||
Сейчас работает: | Сейчас работает: | ||
* Базовый просмотр gear-репозиториев. Примитивный git-браузер показывает все ветки, теги, последние 10 коммитов истории и дерево файлов (tree) последнего коммита. Тут работы непочатый край, но планируется сделать конфетку | * Базовый просмотр gear-репозиториев. Примитивный git-браузер показывает все ветки, теги, последние 10 коммитов истории и дерево файлов (tree) последнего коммита. Тут работы непочатый край, но планируется сделать конфетку в стиле gitg. | ||
* Регистрация пользователей | * Регистрация пользователей. | ||
* Скринкаст по работе с сайтом | * Скринкаст по работе с сайтом. | ||
* Загрузка своего публичного ssh-ключа | * Загрузка своего публичного ssh-ключа. | ||
* Создание gear-репозиториев (а также переименование и удаление) | * Создание gear-репозиториев (а также переименование и удаление). | ||
* RW доступ к своим gear-репозиториям через ssh | * RW доступ к своим gear-репозиториям через ssh. | ||
* RO доступ ко всем gear-репозиториям через git | * RO доступ ко всем gear-репозиториям через git. | ||
* Сборка rpm-пакетов из gear-репозитория с отображением логов сборки в прямом эфире! apt-репозитории появляются [http://git.truecrux.org/overlays/ здесь] | * Сборка rpm-пакетов из gear-репозитория с отображением логов сборки в прямом эфире! apt-репозитории появляются [http://git.truecrux.org/overlays/ здесь]. | ||
* Просмотр истории логов последних 10 сборок | * Просмотр истории логов последних 10 сборок. | ||
==Основные положения проекта== | [[Image:gearrepo_logo.png|300px|center|thumb|http://gear.truecrux.org/]] | ||
===Основные положения проекта=== | |||
*Что это? | *Что это? | ||
Это веб-ресурс, где каждый желающий может создавать публичные GR, | Это веб-ресурс, где каждый желающий может создавать публичные GR, | ||
Строка 118: | Строка 134: | ||
*Что требуется для работы? | *Что требуется для работы? | ||
Отличительной чертой ресурса является простота и невысокие начальные требования | Отличительной чертой ресурса является простота и невысокие начальные требования | ||
к работе. Основные инструменты | к работе. Основные инструменты — git и веб-браузер (не нужны ни | ||
локальные зеркала sisyphus, ни gear, ни hasher, ни rpm).<br> | локальные зеркала sisyphus, ни gear, ни hasher, ни rpm).<br> | ||
К примеру, для создания нового или клонирования существующего GR потребуется | К примеру, для создания нового или клонирования существующего GR потребуется | ||
Строка 132: | Строка 148: | ||
---- | ---- | ||
*Чем это отличается от git.alt? | *Чем это отличается от git.alt? | ||
Основное отличие | Основное отличие это свободный доступ для всех желающих попробовать свои силы | ||
в сборке ПО, не требуя глубоких знаний gear и прочего.<br> | в сборке ПО, не требуя глубоких знаний gear и прочего.<br> | ||
Веб-интерфейс управления всеми операциями, наличие механизмов для совместной | Веб-интерфейс управления всеми операциями, наличие механизмов для совместной | ||
работы, детальная и наглядная информация о GR (коммиты, ветки, теги...) и rpm.<br> | работы, детальная и наглядная информация о GR (коммиты, ветки, теги...) и rpm.<br> | ||
Предполагается, что | Предполагается, что будет узаконено несколько типичных схем ведения GR с целью | ||
упрощения совместной работы и возможности автоматизации рутинных операций. | упрощения совместной работы и возможности автоматизации рутинных операций. | ||
---- | ---- | ||
*Что получит ${простой} пользователь? | *Что получит <code>${простой}</code> пользователь? | ||
Получить софт в таком виде и с такими фичами, которые нужны ему. Не секрет, что | Получить софт в таком виде и с такими фичами, которые нужны ему. Не секрет, что | ||
некоторые заточенные решения не подходят для общего случая или версия ПО | некоторые заточенные решения не подходят для общего случая или версия ПО | ||
экспериментальная, а где взять такие специфические сборки? Здесь! | экспериментальная, а где взять такие специфические сборки? Здесь! | ||
---- | ---- | ||
*Что получит ${непростой} пользователь? | *Что получит <code>${непростой}</code> пользователь? | ||
Возможность собрать нужный ему пакет, например, с немножко другими опциями | Возможность собрать нужный ему пакет, например, с немножко другими опциями | ||
configure. При этом от него потребуется лишь базовые знания и никаких локальных | configure. При этом от него потребуется лишь базовые знания и никаких локальных | ||
Строка 150: | Строка 166: | ||
(Потом он втянется и плавно станет следующим видом пользователя ↓) | (Потом он втянется и плавно станет следующим видом пользователя ↓) | ||
---- | ---- | ||
*Что получит ${искушенный в сборке, но не из ALT Team} пользователь? | *Что получит <code>${искушенный в сборке, но не из ALT Team}</code> пользователь? | ||
Донести до всего мира | Донести до всего мира свои сборки, с вылизанными и отточенными спеками, свои | ||
apt-репозитории. Увидеть статистику скачанных пакетов, узнать сколько людей | apt-репозитории. Увидеть статистику скачанных пакетов, узнать сколько людей | ||
пользуются его сборками, прочитать их отзывы. | пользуются его сборками, прочитать их отзывы. | ||
---- | ---- | ||
*Что получит ${ALT Team} пользователь? | *Что получит <code>${ALT Team}</code> пользователь? | ||
Простоту в работе: долой локальные зеркала, долой все rpm-macros' из системы, | Простоту в работе: долой локальные зеркала, долой все rpm-macros' из системы, | ||
долой алиасы вокруг gear* rpm* команд и т.д.<br> | долой алиасы вокруг gear* rpm* команд и т.д.<br> | ||
Простота совместной работы | Простота совместной работы — сидя в кафе, с мобильного замержить чей-нибудь GR.<br> | ||
Представьте возможность наблюдать в браузере процесс сборки, запустить | Представьте возможность наблюдать в браузере процесс сборки, запустить | ||
параллельно две-три сборки, заглянуть в сборочный чрут, подсмотреть config.log. | параллельно две-три сборки, заглянуть в сборочный чрут, подсмотреть config.log. | ||
---- | ---- | ||
*Что получит ${корпоративный} пользователь? | *Что получит <code>${корпоративный}</code> пользователь? | ||
Возможность поддерживать свои наработки, своё ПО в готовом для установки виде | Возможность поддерживать свои наработки, своё ПО в готовом для установки виде | ||
для различных дистрибутивов/бранчей без вложений в инфраструктуру сборки. | для различных дистрибутивов/бранчей без вложений в инфраструктуру сборки. | ||
Строка 169: | Строка 185: | ||
** Веб-конструктор спеков с готовыми шаблонами. | ** Веб-конструктор спеков с готовыми шаблонами. | ||
** Кнопка "попробовать собрать новую версию" для автоматической сборки новой версии пакета. | ** Кнопка "попробовать собрать новую версию" для автоматической сборки новой версии пакета. | ||
** Интеграция с | ** Интеграция с packages.altlinux.org/sisyphus.ru | ||
** Вероятно можно будет создавать свои собственные бранчи в виде среза Sisyphus за какой-либо день + небольшой apt-репозиторий сверху (aka overlay) | ** Вероятно можно будет создавать свои собственные бранчи в виде среза Sisyphus за какой-либо день + небольшой apt-репозиторий сверху (aka overlay). | ||
** Возможно появится возможность из таких бранчей сгенерировать установочные iso одним кликом и сразу их опубликовать. | ** Возможно появится возможность из таких бранчей сгенерировать установочные iso одним кликом и сразу их опубликовать. | ||
---- | ---- | ||
==Техническая реализация== | ===Техническая реализация=== | ||
Созданы 3 контейнера OpenVZ: сервер веб-приложения, сервер с gear/apt репозиториями, сборочный сервер. | Созданы 3 контейнера OpenVZ: сервер веб-приложения, сервер с gear/apt репозиториями, сборочный сервер. | ||
Общая схема выглядит так: | Общая схема выглядит так:<br> | ||
[[Image:Gearrepo.png|center|Схема GearRepo]] | [[Image:Gearrepo.png|center|Схема GearRepo]]<br> | ||
*Http-запрос клиента идёт на фронтенд apache, который затем проксируется на бэкенд [https://metacpan.org/module/Twiggy Twiggy], который передаёт данные в веб-приложение GearRepo::Web (на веб-фреймворке [http://perldancer.org/ Dancer] ). | *Http-запрос клиента идёт на фронтенд apache, который затем проксируется на бэкенд [https://metacpan.org/module/Twiggy Twiggy], который, в свою очередь, передаёт данные в веб-приложение GearRepo::Web (на веб-фреймворке [http://perldancer.org/ Dancer] ). | ||
Веб-сервер Twiggy используется по причине необходимости использования [https://metacpan.org/module/AnyEvent AnyEvent] в веб-приложении. | Веб-сервер Twiggy используется по причине необходимости использования [https://metacpan.org/module/AnyEvent AnyEvent] в веб-приложении. | ||
*Веб-приложение обрабатывает запрос и если в результате потребуется выполнить какое-либо действие с gear-репозиторием, например, создать/переименовать или выполнить сборку, формируется запрос на демона задач [http://gearman.org/ gearmand] | *Веб-приложение обрабатывает запрос и, если в результате потребуется выполнить какое-либо действие с gear-репозиторием, например, создать/переименовать или выполнить сборку, то формируется запрос на демона задач [http://gearman.org/ gearmand]. Этот демон передаёт задачу в соответствующий worker (отдельный процесс), который асинхронно выполняет эту операцию и возвращает результат. | ||
*Использование сервера задач необходимо, поскольку не все задачи могут выполняться за приемлемое время (~1 сек) и следовательно должны выполняться асинхронно | *Использование сервера задач необходимо, поскольку не все задачи могут выполняться за приемлемое время (~1 сек) и, следовательно, должны выполняться асинхронно и при этом не требовать ресурсоёмких операций (как, например, fork() на каждую новую задачу). | ||
*Worker'ы для выполнения операций подключаются по ssh к серверу (gear/apt или build-server). Используется одно постоянное ssh-соединение, в рамках которого мультиплексируются новые сеансы. Команды выполняются с правами непривилегированных пользователей, через специальный враппер команд, проверяющий корректность команд и выполняющих их. | *Worker'ы для выполнения операций подключаются по ssh к серверу (gear/apt или build-server). Используется одно постоянное ssh-соединение, в рамках которого мультиплексируются новые сеансы. Команды выполняются с правами непривилегированных пользователей, через специальный враппер команд, проверяющий корректность команд и выполняющих их. | ||
*Число сборочных серверов может неограниченно расширяться, они могут находиться где угодно. Пока налажен только один | *Число сборочных серверов может неограниченно расширяться, они могут находиться где угодно. Пока налажен только один (хотя на картинке два, но это обман — ресурсов всё-таки маловато). | ||
* | *На данный момент используется быстрая и лёгкая СУБД SQLite, которая в принципе легко может быть заменена на любую другую, если это потребуется. | ||
* | *Помимо веб-интерфейса есть также доступ по протоколам ssh и git. Для ssh используется также враппер команд, сходный с [https://github.com/sitaramc/gitolite gitolite]. Для git развёрнут git-daemon, который обслуживает только RO-запросы к публичным репозиториям. | ||
*Также стоит упомянуть и сторону клиента. Сейчас строк в проекте, написанных на JavaScript, больше, чем кода серверной части на Perl. Используется фреймворк [http://jquery.com/ JQuery]. Пока раздумываю, стоит ли искать фреймворк пользовательского интерфейса или можно обойтись своими силами. Для git-браузера обмен с сервером ведётся с использованием JSON, в котором передаются структуры с данными git-репозитория, а вывод формируется уже в браузере. Будет использоваться кэширование на стороне клиента, что позволит быстро и удобно работать с gear-репозиторием. | |||
__SHOWFACTBOX__ | |||
[[Категория:ALT-review]] | [[Категория:ALT-review]] | ||
[[Категория:gear]] | |||
[[Категория:girar]] | |||
{{Category navigation|title=Журнал ALT-review|category=ALT-review|sortkey={{SUBPAGENAME}}}} | |||
{{Category navigation|title=gear|category=gear|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 09:50, 17 июля 2015
Журнал ALT-review
Title::GearRepo — ресурс для разработчиков и майнтейнеров- Автор: Author::ALT Club Раздел: Section::технологии Выпуск: Issue::pilot Тег: Tag::сборка
|
GearRepo
GearRepo — это ресурс для разработчиков и майнтейнеров, где можно создавать Gear-репозитории исходного кода программ, собирать из них
бинарные RPM-пакеты и формировать APT-репозитории, пригодные для
использования в дистрибутивах на базе стабильных бранчей ALT Linux
и/или нестабильной ветки Sisyphus.
На данный момент GearRepo находится в процессе разработки.
Хочется привлечь текущих участников команды ALT к тестированию проекта и озвучиванию своих предложений и критики.
От первого лица
Здравствуйте, Владимир! В рамках подготовки роллинг-релиз журнала ALT-review хотелось бы задать Вам несколько вопросов относительно ресурса GearRepo и не только. На портале http://gear.truecrux.org есть пояснение о назначении ресурса, также там размещен скринкаст — практически исчерпывающий ответ на вопрос о том, как работать с ресурсом. Однако, хотелось бы детальнее осветить создание этого ресурса и того, что с ним связано. Ниже приведены вопросы, но хотелось бы оставить за собой право задать дополнительные позже (если такие появятся). Также сами ответы Вы сможете найти на вики a.o (в категории ALT-review) до анонса статьи и сообщить о необходимых корректировках.
Вопросы (Q): Михаил Радюк torabora
Ответы (A): Владимир Леттиев crux
Q: Скажите, это те самые "карманы", обсуждение которых давно ведется?
A: Это несколько шире, чем "карманы". Да, там можно создать свой apt-репозиторий (оверлей/карман ...), но этим дело не ограничивается.
Q: Почему о разработке этого портала не знают даже многие тимовцы? Вы его пока специально широко не афишировали или есть какие-то иные причины?
A: Анонс был и достаточно давно http://lists.altlinux.org/pipermail/sisyphus/2011-May/353930.html
Протестировать альфа-релиз я приглашал на irc-канале #altlinux, откликнулся raorn@, за что ему спасибо. Было исправлено несколько серьёзных недочётов.
После завершения вёрстки текущего дизайна сайта, я также делал анонс в G+ (подавляющее большинство моих друзей в нём это участники ALT Linux Team) для проведения тестирования.
Никакого ажиотажа это не вызвало и, как я и предполагал с самого начала, никому, на самом деле, это не интересно. У большинства участников уже сложился свой собственный workflow и менять его и лениво, и трудно (вспоминаем переезд с srpm на gear).
Q: На какой основе он создан — при чьей-то поддержке или самостоятельно?
A: Сделан он самостоятельно, прежде всего для создания комфортного инструмента для ведения пакетов в Sisyphus и бранчах, проведения экспериментов и т.п. Например, последний perl 5.16.1 с зависимостями был как раз собран в "кармане" GearRepo.
Q: Сколько времени и сил Вам потребовалось для его создания?
A: Сейчас трудно уже посчитать, но практически целый месяц (август 2011) я всё свободное время программировал. Дальше уже было значительно меньше времени затрачено.
Кроме того, в рамках подобных проектов всегда есть возможность изучить и опробовать новые технологии, что хорошо мотивирует и работать становится легко.
Q: Глупый наверное вопрос — на чем он написан и почему?
A: Кое-какие технические детали реализации я опубликовал http://blog.truecrux.org/post/xiii
Серверная часть пишется на Perl, клиент на JavaScript с использованием фреймворка JQuery. Выбор определён опытом и вкусом.
Q: Планируются и возможны ли дополнительные возможности ресурса?
A: Фичи добавляются по мере необходимости.
Q: Насколько стабильным и надежным будет ресурс, когда будет запущен в качестве "боевого"?
A: Всё зависит от числа пользователей. Основная нагрузка идёт на сборочные мощности. Увеличивая число сборочных контейнеров, можно обслуживать большое кол-во одновременно работающих пользователей.
Q: На чьих серверах он "крутится"? Нет ли вероятности, что его прикроют при росте его популярности (и соответственно гигантской нагрузке)?
A: Хостится на своём выделенном железе, с этим проблемы нет. Если ресурс вдруг станет популярным и ему станет тесно в рамках имеющихся ресурсов, то можно будет заняться поиском соответствующего хостинга.
Q: Несет ли какую-то смысловую нагрузку слово truecrux в названии? Или он чему-то посвящен?
A: Нет. В теории он должет переехать на домен второго уровня, имя которому пока не придумалось. Сейчас просто используется существующий личный домен.
Q: Спасибо!
A: Вам спасибо.
Цель проекта
Цель проекта — упростить совместную работу разработчиков команды ALT и привлечь новичков к работе над пакетной базой Sisyphus. Проект позволит снизить порог вхождения для новых разработчиков, но не только за счёт упрощения и автоматизации рутинных операций, но и документирования, разъяснения на пальцах каждого шага в работе (контекстные подсказки и т.д.)
Возможности
Сейчас работает:
- Базовый просмотр gear-репозиториев. Примитивный git-браузер показывает все ветки, теги, последние 10 коммитов истории и дерево файлов (tree) последнего коммита. Тут работы непочатый край, но планируется сделать конфетку в стиле gitg.
- Регистрация пользователей.
- Скринкаст по работе с сайтом.
- Загрузка своего публичного ssh-ключа.
- Создание gear-репозиториев (а также переименование и удаление).
- RW доступ к своим gear-репозиториям через ssh.
- RO доступ ко всем gear-репозиториям через git.
- Сборка rpm-пакетов из gear-репозитория с отображением логов сборки в прямом эфире! apt-репозитории появляются здесь.
- Просмотр истории логов последних 10 сборок.
Основные положения проекта
- Что это?
Это веб-ресурс, где каждый желающий может создавать публичные GR, управлять, а также вести совместную работу с другими пользователями. Система позволяет собирать из GR готовые rpm-пакеты для требуемого окружения (Sisyphus или бранч), объединять группы rpm-пакетов в apt-репозитории и публиковать всё это для общего доступа.
- Что требуется для работы?
Отличительной чертой ресурса является простота и невысокие начальные требования
к работе. Основные инструменты — git и веб-браузер (не нужны ни
локальные зеркала sisyphus, ни gear, ни hasher, ни rpm).
К примеру, для создания нового или клонирования существующего GR потребуется
лишь один клик мышью.
- Возможна ли совместная работа над GR?
Конечно. Возможный сценарий. Вы нашли ошибку в сборке пакета чьего-либо пакета и хотите
её исправить. Клонируйте GR, создаёте ветку, вносите исправление, проверяете
сборку и отправляете pull request. Основной майнтейнер GR будет проинформирован
о пришедшем запросе и сможет одним нажатием кнопки merge включить изменения в
основную ветку.
Всё наглядно, каждый шаг задокументирован, и доступно даже для новичка.
- Чем это отличается от git.alt?
Основное отличие это свободный доступ для всех желающих попробовать свои силы
в сборке ПО, не требуя глубоких знаний gear и прочего.
Веб-интерфейс управления всеми операциями, наличие механизмов для совместной
работы, детальная и наглядная информация о GR (коммиты, ветки, теги...) и rpm.
Предполагается, что будет узаконено несколько типичных схем ведения GR с целью
упрощения совместной работы и возможности автоматизации рутинных операций.
- Что получит
${простой}
пользователь?
Получить софт в таком виде и с такими фичами, которые нужны ему. Не секрет, что некоторые заточенные решения не подходят для общего случая или версия ПО экспериментальная, а где взять такие специфические сборки? Здесь!
- Что получит
${непростой}
пользователь?
Возможность собрать нужный ему пакет, например, с немножко другими опциями
configure. При этом от него потребуется лишь базовые знания и никаких локальных
сборочных ресурсов.
(Потом он втянется и плавно станет следующим видом пользователя ↓)
- Что получит
${искушенный в сборке, но не из ALT Team}
пользователь?
Донести до всего мира свои сборки, с вылизанными и отточенными спеками, свои apt-репозитории. Увидеть статистику скачанных пакетов, узнать сколько людей пользуются его сборками, прочитать их отзывы.
- Что получит
${ALT Team}
пользователь?
Простоту в работе: долой локальные зеркала, долой все rpm-macros' из системы,
долой алиасы вокруг gear* rpm* команд и т.д.
Простота совместной работы — сидя в кафе, с мобильного замержить чей-нибудь GR.
Представьте возможность наблюдать в браузере процесс сборки, запустить
параллельно две-три сборки, заглянуть в сборочный чрут, подсмотреть config.log.
- Что получит
${корпоративный}
пользователь?
Возможность поддерживать свои наработки, своё ПО в готовом для установки виде для различных дистрибутивов/бранчей без вложений в инфраструктуру сборки.
- Что ещё там может быть?
- Веб-конструктор спеков с готовыми шаблонами.
- Кнопка "попробовать собрать новую версию" для автоматической сборки новой версии пакета.
- Интеграция с packages.altlinux.org/sisyphus.ru
- Вероятно можно будет создавать свои собственные бранчи в виде среза Sisyphus за какой-либо день + небольшой apt-репозиторий сверху (aka overlay).
- Возможно появится возможность из таких бранчей сгенерировать установочные iso одним кликом и сразу их опубликовать.
Техническая реализация
Созданы 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-репозиторием.
__SHOWFACTBOX__