Различия между версиями 6 и 7
Версия 6 от 2011-07-23 23:58:58
Размер: 5192
Редактор: FrBrGeorge
Комментарий:
Версия 7 от 2011-07-24 11:23:00
Размер: 6676
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 1: Строка 1:
== Собирается ли свободное сообщество использовать для обновления своих пакетов огромных управляемых человекоподобных роботов? == = Собирается ли свободное сообщество использовать для обновления своих пакетов огромных управляемых человекоподобных роботов? =
Строка 12: Строка 12:
=== ?Предыстория ===
 * cc -> make -> крибле, крабле, бумс -> спеки -> сборочницы
 * хранилища и инструменты по упрощению сборки (bleeding edge)<F2>
=== ?Проблематика: чего не хочется делать ===
=== ?У кого что ===
== Крибле! Крабле! Бумс... ==
 * История полуавтоматизации: cc → make → autotools → пакеты и спецификации → сборочницы
 * Хранилища и инструменты по упрощению сборки в них
== Человек не должен работать! ==
== Двигатели прогресса ==
Строка 20: Строка 20:
=== Пролегомены к идеальному сообществу роботов === == Пролегомены к идеальному сообществу роботов ==
Строка 26: Строка 26:
==== Сравнить версии ==== === Сравнить версии ===
Строка 35: Строка 35:
==== Обновить ==== === Обновить ===
Строка 49: Строка 49:
==== Собрать ==== === Собрать ===
Строка 58: Строка 58:
==== Проверить ==== === Проверить ===
Строка 64: Строка 64:
==== Замечания ==== == Критика идеального сообщества роботов ==
 * Асинхронный переход из состояния в состояние: push? pull?
Строка 67: Строка 68:
=== Дешёвая пластиковая имитация ===
 [[http://git.altlinux.org/people/george/public/?p=autobuild.git]]
=== ?побочные эффекты ===
== Дешёвая пластиковая имитация ==
 * [[http://git.altlinux.org/people/george/public/?p=autobuild.git|Полуавтоматика]]
  * `00-state` — вывод состояния (`git status` и grep по журналу последней массовой сборки)
  * `01-getall` — получение из [[http://git.altlinux.org/people/george/packages|g.a:people/george]] новых пакетов, содержащих `.gear/autobuild.watch` в ветке `Sisyphus`
  * `10-sync` — синхронизация исходников с [[http://git.altlinux.org/gears/|g.a:gears]] и [[http://git.altlinux.org/people/george/packages|g.a:people/george]]
  * `20-build` — [[http://git.altlinux.org/people/george/packages/?p=nish-functions.git;a=blob;f=nish-functions/functions.autobuild|попытка обновления и пересборки]] (в случае неудачи восстанавливается предыдущее состояние, ошибки доступны в журнале)
  * `30-push` — отправка в хранилище, создание подписанного тега и отправка на сборку в Sisyphus всех пакетов, имеющих статус '' ahead of 'origin/master' ''
 * [[http://git.altlinux.org/people/george/packages/?p=nish-functions.git|Сопуствтующние утилиты]]
== ?побочные эффекты ==
Строка 72: Строка 79:
 * ?  * ...

Собирается ли свободное сообщество использовать для обновления своих пакетов огромных управляемых человекоподобных роботов?

Обновление уже оформленного пакета в хранилище (например, при выходе новой upstream-версии ПО) -- сравнительно несложная задача, посильная как человеку, так и небольшому роботу. Массовое отслеживание новых версий и обновление соответствующих пакетов в хранилище -- задача, очевидно, требующая более сложных и больших роботов, отчасти похожих на участников сообщества, а отчасти -- управляемых ими. В докладе обсуждаются наиболее востребованные свободным сообществом свойства огромных управляемых человекоподобных роботов, приводятся практические примеры.

Крибле! Крабле! Бумс...

  • История полуавтоматизации: cc → make → autotools → пакеты и спецификации → сборочницы
  • Хранилища и инструменты по упрощению сборки в них

Человек не должен работать!

Двигатели прогресса

Пролегомены к идеальному сообществу роботов

Диаграмма состояний пакета:

PackageWorkflow.png

Ещё одно изолированное состояние: вечно свежий.

Сравнить версии

Не меняет дерево исходников.

  1. Получить версию в целевом репозитории Vt

  2. Получить версии в development-репозиториях Vd1 ... VdN

  3. Получить версию в upstream Vu

    • /!\ Upstream исчез, сменил формат хранения и т. п.

Версия в development-репозиториях может быть выше актуальной, это признак ручной сборки

Допуск к обновлению при условии Vu > max(Vt, Vd1, ... , VdN)

Обновить

  1. Получение актуальных исходников:
    1. Pull из целевого репозитория
    2. Pull из development-репозиториев
  2. Получение Upsream-исходников
    • /!\ Upstream исходники не отдал, ошибка скачивания и т. п.

  3. Формирование сборочной ветки
    1. Обновление старых исходников новыми
      • /!\ Скрипты обновления не справились с задачей, вместо upstream скачался мусор и т. п.

    2. Модификация служебных файлов (*.spec, .gear/* ...)
      • /!\ Скрипты обновления не справились с задачей, информация о новом пакете неверна и т. п.

    3. Оформление коммита

Допуск к сборке

Собрать

  1. Тестовая сборка сборочной ветки в целевое хранилище
  2. Получение журнала сборки
    • /!\ Старым способом не собирается, плохо обновился spec и т. п.

    • /!\ Пострадало качество сборки: unpackaged files, предупреждения и т. п.

  3. Формирование бинарного хранилища для тестирования
  4. Формальное тестирование
    • /!\ Пакет на устанавливается, не прошли дополнительные тесты

Допуск к проверке

Проверить

Проверяет человек (тестер)

  1. Подключение тестового хранилища
  2. Установка и тестирование пакетов
    • /!\ Тест не прошёл

Допуск к публикации

Критика идеального сообщества роботов

  • Асинхронный переход из состояния в состояние: push? pull?
  • Shared task?
  • ...

Дешёвая пластиковая имитация

  • Полуавтоматика

    • 00-state — вывод состояния (git status и grep по журналу последней массовой сборки)

    • 01-getall — получение из g.a:people/george новых пакетов, содержащих .gear/autobuild.watch в ветке Sisyphus

    • 10-sync — синхронизация исходников с g.a:gears и g.a:people/george

    • 20-buildпопытка обновления и пересборки (в случае неудачи восстанавливается предыдущее состояние, ошибки доступны в журнале)

    • 30-push — отправка в хранилище, создание подписанного тега и отправка на сборку в Sisyphus всех пакетов, имеющих статус ahead of 'origin/master'

  • Сопуствтующние утилиты

?побочные эффекты

  • Разделение на тестера и сборщика
  • Автоматизация каждого процесса (в т. ч. тестировния)
  • ...

FrBrGeorge/HumanlikeRobots/Paper (последним исправлял пользователь FrBrGeorge 2011-07-24 22:04:07)