GearRepo: различия между версиями

Материал из ALT Linux Wiki
Строка 139: Строка 139:
упрощения совместной работы и возможности автоматизации рутинных операций.
упрощения совместной работы и возможности автоматизации рутинных операций.
----
----
*Что получит ${простой} пользователь?
*Что получит <code>${простой}</code> пользователь?
Получить софт в таком виде и с такими фичами, которые нужны ему. Не секрет, что
Получить софт в таком виде и с такими фичами, которые нужны ему. Не секрет, что
некоторые заточенные решения не подходят для общего случая или версия ПО
некоторые заточенные решения не подходят для общего случая или версия ПО
экспериментальная, а где взять такие специфические сборки? Здесь!
экспериментальная, а где взять такие специфические сборки? Здесь!
----
----
*Что получит ${непростой} пользователь?
*Что получит <code>${непростой}</code> пользователь?
Возможность собрать нужный ему пакет, например, с немножко другими опциями
Возможность собрать нужный ему пакет, например, с немножко другими опциями
configure. При этом от него потребуется лишь базовые знания и никаких локальных
configure. При этом от него потребуется лишь базовые знания и никаких локальных
Строка 150: Строка 150:
(Потом он втянется и плавно станет следующим видом пользователя ↓)
(Потом он втянется и плавно станет следующим видом пользователя ↓)
----
----
*Что получит ${искушенный в сборке, но не из ALT Team} пользователь?
*Что получит <code>${искушенный в сборке, но не из ALT Team}</code> пользователь?
Донести до всего мира, свои сборки, с вылизанными и отточенными спеками, свои
Донести до всего мира, свои сборки, с вылизанными и отточенными спеками, свои
apt-репозитории. Увидеть статистику скачанных пакетов, узнать сколько людей
apt-репозитории. Увидеть статистику скачанных пакетов, узнать сколько людей
пользуются его сборками, прочитать их отзывы.
пользуются его сборками, прочитать их отзывы.
----
----
*Что получит ${ALT Team} пользователь?
*Что получит <code>${ALT Team}</code> пользователь?
Простоту в работе: долой локальные зеркала, долой все rpm-macros' из системы,
Простоту в работе: долой локальные зеркала, долой все rpm-macros' из системы,
долой алиасы вокруг gear* rpm* команд и т.д.<br>
долой алиасы вокруг gear* rpm* команд и т.д.<br>
Строка 162: Строка 162:
параллельно две-три сборки, заглянуть в сборочный чрут, подсмотреть config.log.
параллельно две-три сборки, заглянуть в сборочный чрут, подсмотреть config.log.
----
----
*Что получит ${корпоративный} пользователь?
*Что получит <code>${корпоративный}</code> пользователь?
Возможность поддерживать свои наработки, своё ПО в готовом для установки виде
Возможность поддерживать свои наработки, своё ПО в готовом для установки виде
для различных дистрибутивов/бранчей без вложений в инфраструктуру сборки.
для различных дистрибутивов/бранчей без вложений в инфраструктуру сборки.

Версия от 11:04, 6 октября 2012

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.






GearRepo

GearRepo

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

От первого лица

Здравствуйте, Владимир! В рамках подготовки роллинг-релиз журнала ALT-review хотелось бы задать Вам несколько вопросов относительно ресурса GearRepo и не только. На портале http://gear.truecrux.org есть пояснение о назначении ресурса, также там размещен практически исчерпывающий работу с ресурсом скринкаст. Однако, хотелось бы детальнее осветить создание этого ресурса и того,что с ним связано. Ниже приведены вопросы, однако хотелось бы оставить за собой право задать дополнительные позже (если такие появятся). Также сами ответы Вы сможете найти на вики a.o (в категории ALT-review) до анонса статьи и сообщить о необходимых корректировках.


Torabora.jpgВопросы(Q): Михаил Радюк torabora Crux.jpgОтветы (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.


  • Что получит ${корпоративный} пользователь?

Возможность поддерживать свои наработки, своё ПО в готовом для установки виде для различных дистрибутивов/бранчей без вложений в инфраструктуру сборки.


  • Что ещё там может быть?
    • Веб-конструктор спеков с готовыми шаблонами.
    • Кнопка "попробовать собрать новую версию" для автоматической сборки новой версии пакета.
    • Интеграция с prometheus.altlinux.org/sisyphus.ru
    • Вероятно можно будет создавать свои собственные бранчи в виде среза Sisyphus за какой-либо день + небольшой apt-репозиторий сверху (aka overlay)
    • Возможно появится возможность из таких бранчей сгенерировать установочные iso одним кликом и сразу их опубликовать.

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

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

Схема GearRepo
  • 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-репозиторием.