Редактирование: GearRepo

Перейти к: навигация, поиск

Внимание: Вы работаете как анонимный пользователь. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
 
{{review
 
{{review
|Title          = GearRepo ресурс для разработчиков и майнтейнеров
+
|Title          = GearRepo - ресурс для разработчиков и майнтейнеров
|Annotation    = GearRepo это ресурс для разработчиков и майнтейнеров, где можно создавать Gear-репозитории исходного кода программ, собирать из них бинарные RPM-пакеты и  формировать APT-репозитории
+
|Annotation    = GearRepo - это ресурс для разработчиков и майнтейнеров, где можно создавать Gear-репозитории исходного кода программ, собирать из них бинарные RPM-пакеты и  формировать APT-репозитории
 
|Author        = ALT Club
 
|Author        = ALT Club
 
|Tag            = сборка
 
|Tag            = сборка
Строка 11: Строка 11:
 
}}
 
}}
 
===GearRepo===
 
===GearRepo===
'''GearRepo''' это ресурс для разработчиков и майнтейнеров, где можно создавать Gear-репозитории исходного кода программ, собирать из них
+
'''GearRepo''' - это ресурс для разработчиков и майнтейнеров, где можно создавать Gear-репозитории исходного кода программ, собирать из них
 
бинарные RPM-пакеты и формировать APT-репозитории, пригодные для
 
бинарные RPM-пакеты и формировать APT-репозитории, пригодные для
использования в дистрибутивах на базе стабильных бранчей ALT Linux
+
использования в дистрибутивах на базе стабильных бранчей ALTLinux
 
и/или нестабильной ветки Sisyphus.<br>
 
и/или нестабильной ветки Sisyphus.<br>
 
На данный момент GearRepo находится в процессе разработки.
 
На данный момент GearRepo находится в процессе разработки.
Строка 22: Строка 22:
 
В рамках подготовки роллинг-релиз журнала ALT-review хотелось бы задать Вам
 
В рамках подготовки роллинг-релиз журнала ALT-review хотелось бы задать Вам
 
несколько вопросов относительно ресурса GearRepo и не только.
 
несколько вопросов относительно ресурса GearRepo и не только.
На портале http://gear.truecrux.org есть пояснение о назначении ресурса, также там размещен скринкаст — практически исчерпывающий ответ на вопрос о том, как работать с ресурсом.
+
На портале http://gear.truecrux.org есть пояснение о назначении ресурса, также там размещен практически исчерпывающий работу с ресурсом скринкаст.
Однако, хотелось бы детальнее осветить создание этого ресурса и того, что с ним связано.
+
Однако, хотелось бы детальнее осветить создание этого ресурса и того,что с ним связано.
Ниже приведены вопросы, но хотелось бы оставить за собой право
+
Ниже приведены вопросы, однако хотелось бы оставить за собой право
 
задать дополнительные позже (если такие появятся). Также сами ответы
 
задать дополнительные позже (если такие появятся). Также сами ответы
 
Вы сможете найти на вики a.o (в категории ALT-review) до анонса статьи
 
Вы сможете найти на вики a.o (в категории ALT-review) до анонса статьи
Строка 49: Строка 49:
  
 
После завершения вёрстки текущего дизайна сайта, я также делал анонс в G+
 
После завершения вёрстки текущего дизайна сайта, я также делал анонс в G+
(подавляющее большинство моих друзей в нём это участники ALT Linux Team) для
+
(подавляющее большинство моих друзей в нём - участники ALT Linux Team) для
 
проведения тестирования.
 
проведения тестирования.
  
Строка 57: Строка 57:
 
(вспоминаем переезд с srpm на gear).
 
(вспоминаем переезд с srpm на gear).
 
----
 
----
'''Q:''' На какой основе он создан при чьей-то поддержке или самостоятельно?
+
'''Q:''' На какой основе он создан - при чьей-то поддержке или самостоятельно?
  
 
'''A:''' Сделан он самостоятельно, прежде всего для создания комфортного
 
'''A:''' Сделан он самостоятельно, прежде всего для создания комфортного
Строка 74: Строка 74:
 
легко.
 
легко.
 
----
 
----
'''Q:''' Глупый наверное вопрос на чем он написан и почему?
+
'''Q:''' Глупый наверное вопрос - на чем он написан и почему?
  
 
'''A:''' Кое-какие технические детали реализации я опубликовал
 
'''A:''' Кое-какие технические детали реализации я опубликовал
Строка 85: Строка 85:
 
'''A:''' Фичи добавляются по мере необходимости.
 
'''A:''' Фичи добавляются по мере необходимости.
 
----
 
----
'''Q:''' Насколько стабильным и надежным будет ресурс, когда будет запущен в качестве "боевого"?
+
'''Q:''' На сколько стабильным и надежным будет ресурс, когда будет запущен в качестве "боевого"?
  
 
'''A:''' Всё зависит от числа пользователей. Основная нагрузка идёт на сборочные
 
'''A:''' Всё зависит от числа пользователей. Основная нагрузка идёт на сборочные
Строка 100: Строка 100:
  
 
'''A:''' Нет. В теории он должет переехать на домен второго уровня, имя которому
 
'''A:''' Нет. В теории он должет переехать на домен второго уровня, имя которому
пока не придумалось. Сейчас просто используется существующий личный домен.
+
пока не придумалось. Сейчас просто используется существующиий личный домен.
 
----
 
----
 
'''Q:''' Спасибо!
 
'''Q:''' Спасибо!
Строка 108: Строка 108:
  
 
===Цель проекта===
 
===Цель проекта===
Цель проекта упростить совместную работу разработчиков команды ALT и привлечь новичков к работе над пакетной базой Sisyphus. Проект позволит снизить порог вхождения для новых разработчиков, но не только за счёт упрощения и автоматизации рутинных операций, но и документирования, разъяснения на пальцах каждого шага в работе (контекстные подсказки и т.д.)
+
Цель проекта - упростить совместную работу разработчиков команды ALT и привлечь новичков к работе над пакетной базой Sisyphus. Проект позволит снизить порог вхождения для новых разработчиков, но не просто за счёт упрощения и автоматизирования рутинных операций, но также - документирования и разъяснения на пальцах каждого шага в работе (контекстные подсказки и т.д.)  
 
 
 
===Возможности===
 
===Возможности===
 
Сейчас работает:  
 
Сейчас работает:  
* Базовый просмотр gear-репозиториев. Примитивный git-браузер показывает все ветки, теги, последние 10 коммитов истории и дерево файлов (tree) последнего коммита. Тут работы непочатый край, но планируется сделать конфетку в стиле gitg.  
+
* Базовый просмотр 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/]]
 
[[Image:gearrepo_logo.png|300px|center|thumb|http://gear.truecrux.org/]]
 
 
===Основные положения проекта===
 
===Основные положения проекта===
 
*Что это?
 
*Что это?
Строка 134: Строка 132:
 
*Что требуется для работы?
 
*Что требуется для работы?
 
Отличительной чертой ресурса является простота и невысокие начальные требования
 
Отличительной чертой ресурса является простота и невысокие начальные требования
к работе. Основные инструменты git и веб-браузер (не нужны ни
+
к работе. Основные инструменты - git и веб-браузер (не нужны ни
 
локальные зеркала sisyphus, ни gear, ни hasher, ни rpm).<br>
 
локальные зеркала sisyphus, ни gear, ни hasher, ни rpm).<br>
 
К примеру, для создания нового или клонирования существующего GR потребуется
 
К примеру, для создания нового или клонирования существующего GR потребуется
Строка 148: Строка 146:
 
----
 
----
 
*Чем это отличается от git.alt?
 
*Чем это отличается от git.alt?
Основное отличие это свободный доступ для всех желающих попробовать свои силы
+
Основное отличие - это свободный доступ для всех желающих попробовать свои силы
 
в сборке ПО, не требуя глубоких знаний gear и прочего.<br>
 
в сборке ПО, не требуя глубоких знаний gear и прочего.<br>
 
Веб-интерфейс управления всеми операциями, наличие механизмов для совместной
 
Веб-интерфейс управления всеми операциями, наличие механизмов для совместной
 
работы, детальная и наглядная информация о GR (коммиты, ветки, теги...) и rpm.<br>
 
работы, детальная и наглядная информация о GR (коммиты, ветки, теги...) и rpm.<br>
Предполагается, что будет узаконено несколько типичных схем ведения GR с целью
+
Предполагается, что будут узаконено несколько типичных схем ведения GR с целью
 
упрощения совместной работы и возможности автоматизации рутинных операций.
 
упрощения совместной работы и возможности автоматизации рутинных операций.
 
----
 
----
Строка 167: Строка 165:
 
----
 
----
 
*Что получит <code>${искушенный в сборке, но не из ALT Team}</code> пользователь?
 
*Что получит <code>${искушенный в сборке, но не из ALT Team}</code> пользователь?
Донести до всего мира свои сборки, с вылизанными и отточенными спеками, свои
+
Донести до всего мира, свои сборки, с вылизанными и отточенными спеками, свои
 
apt-репозитории. Увидеть статистику скачанных пакетов, узнать сколько людей
 
apt-репозитории. Увидеть статистику скачанных пакетов, узнать сколько людей
 
пользуются его сборками, прочитать их отзывы.
 
пользуются его сборками, прочитать их отзывы.
Строка 174: Строка 172:
 
Простоту в работе: долой локальные зеркала, долой все rpm-macros' из системы,
 
Простоту в работе: долой локальные зеркала, долой все rpm-macros' из системы,
 
долой алиасы вокруг gear* rpm* команд и т.д.<br>
 
долой алиасы вокруг gear* rpm* команд и т.д.<br>
Простота совместной работы сидя в кафе, с мобильного замержить чей-нибудь GR.<br>
+
Простота совместной работы - сидя в кафе, с мобильного, замержить чей-нибудь GR.<br>
 
Представьте возможность наблюдать в браузере процесс сборки, запустить
 
Представьте возможность наблюдать в браузере процесс сборки, запустить
 
параллельно две-три сборки, заглянуть в сборочный чрут, подсмотреть config.log.
 
параллельно две-три сборки, заглянуть в сборочный чрут, подсмотреть config.log.
Строка 185: Строка 183:
 
** Веб-конструктор спеков с готовыми шаблонами.
 
** Веб-конструктор спеков с готовыми шаблонами.
 
** Кнопка "попробовать собрать новую версию" для автоматической сборки новой версии пакета.
 
** Кнопка "попробовать собрать новую версию" для автоматической сборки новой версии пакета.
** Интеграция с packages.altlinux.org/sisyphus.ru
+
** Интеграция с prometheus.altlinux.org/sisyphus.ru
** Вероятно можно будет создавать свои собственные бранчи в виде среза Sisyphus за какой-либо день + небольшой apt-репозиторий сверху (aka overlay).
+
** Вероятно можно будет создавать свои собственные бранчи в виде среза Sisyphus за какой-либо день + небольшой apt-репозиторий сверху (aka overlay)
 
** Возможно появится возможность из таких бранчей сгенерировать установочные iso одним кликом и сразу их опубликовать.
 
** Возможно появится возможность из таких бранчей сгенерировать установочные iso одним кликом и сразу их опубликовать.
  
 
----
 
----
 
 
===Техническая реализация===
 
===Техническая реализация===
 
Созданы 3 контейнера OpenVZ: сервер веб-приложения, сервер с gear/apt репозиториями, сборочный сервер.  
 
Созданы 3 контейнера OpenVZ: сервер веб-приложения, сервер с gear/apt репозиториями, сборочный сервер.  
 
Общая схема выглядит так:<br>
 
Общая схема выглядит так:<br>
 
[[Image:Gearrepo.png|center|Схема GearRepo]]<br>
 
[[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]. Этот демон передаёт задачу в соответствующий worker (отдельный процесс), который асинхронно выполняет эту операцию и возвращает результат.  
+
*Веб-приложение обрабатывает запрос и если в результате потребуется выполнить какое-либо действие с gear-репозиторием, например, создать/переименовать или выполнить сборку, формируется запрос на демона задач [http://gearman.org/ gearmand], который передаёт задачу в соответствующий worker (отдельный процесс), который асинхронно выполняет эту операцию и возвращает результат.  
  
*Использование сервера задач необходимо, поскольку не все задачи могут выполняться за приемлемое время (~1 сек) и, следовательно, должны выполняться асинхронно и при этом не требовать ресурсоёмких операций (как, например, fork() на каждую новую задачу).  
+
*Использование сервера задач необходимо, поскольку не все задачи могут выполняться за приемлемое время (~1 сек) и следовательно должны выполняться асинхронно, при этом не требовать ресурсоёмких операций (как например, fork() на каждую новую задачу).  
  
 
*Worker'ы для выполнения операций подключаются по ssh к серверу (gear/apt или build-server). Используется одно постоянное ssh-соединение, в рамках которого мультиплексируются новые сеансы. Команды выполняются с правами непривилегированных пользователей, через специальный враппер команд, проверяющий корректность команд и выполняющих их.  
 
*Worker'ы для выполнения операций подключаются по ssh к серверу (gear/apt или build-server). Используется одно постоянное ssh-соединение, в рамках которого мультиплексируются новые сеансы. Команды выполняются с правами непривилегированных пользователей, через специальный враппер команд, проверяющий корректность команд и выполняющих их.  
  
*Число сборочных серверов может неограниченно расширяться, они могут находиться где угодно. Пока налажен только один (хотя на картинке два, но это обман ресурсов всё-таки маловато).  
+
*Число сборочных серверов может неограниченно расширяться, они могут находиться где угодно. Пока налажен только один, на картинке два, но это обман - ресурсов всё-таки маловато.  
  
*На данный момент используется быстрая и лёгкая СУБД SQLite, которая в принципе легко может быть заменена на любую другую, если это потребуется.  
+
*На данный момент используется быстрая и лёгкая СУБД SQLite, которая в принципе легко может быть заменена на любую другую если это потребуется.  
  
*Помимо веб-интерфейса есть также доступ по протоколам ssh и git. Для ssh используется также враппер команд, сходный с [https://github.com/sitaramc/gitolite gitolite]. Для git развёрнут git-daemon, который обслуживает только RO-запросы к публичным репозиториям.  
+
*Помимо веб-интерфейса есть также доступ по протоколам ssh и git. Для ssh используется также враппер команд, сходный [https://github.com/sitaramc/gitolite gitolite]. Для git развёрнут git-daemon, который обслуживает только RO-запросы к публичным репозиториям.  
  
*Также стоит упомянуть и сторону клиента. Сейчас строк в проекте, написанных на JavaScript, больше, чем кода серверной части на Perl. Используется фреймворк [http://jquery.com/ JQuery]. Пока раздумываю, стоит ли искать фреймворк пользовательского интерфейса или можно обойтись своими силами. Для git-браузера обмен с сервером ведётся с использованием JSON, в котором передаются структуры с данными git-репозитория, а вывод формируется уже в браузере. Будет использоваться кэширование на стороне клиента, что позволит быстро и удобно работать с gear-репозиторием.  
+
*Также стоит упомянуть и сторону клиента. Сейчас строк в проекте написанных на JavaScript больше, чем кода серверной части на Perl. Используется фреймворк [http://jquery.com/ JQuery]. Пока раздумываю стоит ли искать фреймворк пользовательского интерфейса или обойтись своими силами. Для git-браузера обмен с сервером ведётся с использованием JSON, в котором передаются структуры с данными git-репозитория, а вывод формируется уже в браузере. Будет использоваться кэширование на стороне клиента, что позволит быстро и удобно работать с gear-репозиторием.  
 
__SHOWFACTBOX__
 
__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}}}}
 

Обратите внимание, что все добавления и изменения текста статьи рассматриваются, как выпущенные на условиях лицензии CC-BY-SA-3.0.

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Вики-разметка
Заголовки: 1-го: == ==, 2-го: === ===, 3-го: ==== ==== уровня.
Быстрая вставка: «» | [[]] [[|]] {{}} {{|}} [[Категория:]] [[altbug:]] <source lang=""></source> <pre></pre> <!-- -->.
Определения: {{man|}} {{lists|}} {{cmd|}} {{path|}} {{prg|}} {{pkg|}} {{term|}} {{span||}} {{altbug|}}
Выделение: ''italics'', '''bold''', <tt>моноширинный</tt>, <code>код</code>.
Списки: * ненумерованный список, ** вложенный список, # нумерованный список, ## вложенный нумерованный список, *# вложенный смешанный список, ;список :определений.
Verbatim: Пробел в начале строки или <pre>Явный тэг</pre>
Ссылки: [http://www.altlinux.ru/ внешние], [[Main Page|внутренние]], [http://altlinux.ru], [[Main Page]]
Шаблоны: {{Crap}} {{D}} {{Policy}} {{DraftPolicy}} {{Merge|}} {{Улучшение}} {{Тимовец|}}