GearRepo: различия между версиями
Sb (обсуждение | вклад) |
Нет описания правки |
||
(не показано 10 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
{{review | {{review | ||
|Title = GearRepo | |Title = GearRepo — ресурс для разработчиков и майнтейнеров | ||
|Annotation = GearRepo | |Annotation = GearRepo — это ресурс для разработчиков и майнтейнеров, где можно создавать Gear-репозитории исходного кода программ, собирать из них бинарные RPM-пакеты и формировать APT-репозитории | ||
|Author = ALT Club | |Author = ALT Club | ||
|Tag = сборка | |Tag = сборка | ||
Строка 13: | Строка 13: | ||
'''GearRepo''' — это ресурс для разработчиков и майнтейнеров, где можно создавать Gear-репозитории исходного кода программ, собирать из них | '''GearRepo''' — это ресурс для разработчиков и майнтейнеров, где можно создавать Gear-репозитории исходного кода программ, собирать из них | ||
бинарные RPM-пакеты и формировать APT-репозитории, пригодные для | бинарные RPM-пакеты и формировать APT-репозитории, пригодные для | ||
использования в дистрибутивах на базе стабильных бранчей | использования в дистрибутивах на базе стабильных бранчей ALT Linux | ||
и/или нестабильной ветки Sisyphus.<br> | и/или нестабильной ветки Sisyphus.<br> | ||
На данный момент GearRepo находится в процессе разработки. | На данный момент GearRepo находится в процессе разработки. | ||
Строка 22: | Строка 22: | ||
В рамках подготовки роллинг-релиз журнала ALT-review хотелось бы задать Вам | В рамках подготовки роллинг-релиз журнала ALT-review хотелось бы задать Вам | ||
несколько вопросов относительно ресурса GearRepo и не только. | несколько вопросов относительно ресурса GearRepo и не только. | ||
На портале http://gear.truecrux.org есть пояснение о назначении ресурса, также там размещен практически исчерпывающий | На портале http://gear.truecrux.org есть пояснение о назначении ресурса, также там размещен скринкаст — практически исчерпывающий ответ на вопрос о том, как работать с ресурсом. | ||
Однако, хотелось бы детальнее осветить создание этого ресурса и того, что с ним связано. | Однако, хотелось бы детальнее осветить создание этого ресурса и того, что с ним связано. | ||
Ниже приведены вопросы, но хотелось бы оставить за собой право | Ниже приведены вопросы, но хотелось бы оставить за собой право | ||
Строка 113: | Строка 113: | ||
Сейчас работает: | Сейчас работает: | ||
* Базовый просмотр 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/]] | ||
Строка 185: | Строка 185: | ||
** Веб-конструктор спеков с готовыми шаблонами. | ** Веб-конструктор спеков с готовыми шаблонами. | ||
** Кнопка "попробовать собрать новую версию" для автоматической сборки новой версии пакета. | ** Кнопка "попробовать собрать новую версию" для автоматической сборки новой версии пакета. | ||
** Интеграция с | ** Интеграция с packages.altlinux.org/sisyphus.ru | ||
** Вероятно можно будет создавать свои собственные бранчи в виде среза Sisyphus за какой-либо день + небольшой apt-репозиторий сверху (aka overlay). | ** Вероятно можно будет создавать свои собственные бранчи в виде среза Sisyphus за какой-либо день + небольшой apt-репозиторий сверху (aka overlay). | ||
** Возможно появится возможность из таких бранчей сгенерировать установочные iso одним кликом и сразу их опубликовать. | ** Возможно появится возможность из таких бранчей сгенерировать установочные iso одним кликом и сразу их опубликовать. | ||
Строка 200: | Строка 200: | ||
*Веб-приложение обрабатывает запрос и, если в результате потребуется выполнить какое-либо действие с 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, которая в принципе легко может быть заменена на любую другую, если это потребуется. | ||
Строка 213: | Строка 213: | ||
__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}}}} |
Текущая версия от 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__