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

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

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

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

Пакетов много, сопровождающий один.

{*} — что можно доверить роботам?

В результате время сопровождающего тратится только на содержательную правки и тестирование

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

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

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

PackageWorkflow.png

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

Состояния неуспеха обрабатываются сопровождающим пакет (возможно, потребуется воспроизвести действия роботов и/или синхронизоваться со сборочной веткой).

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

Не меняет дерево исходников; возможно, и не требует его.

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

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

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

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

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

Допуск к обновлению при условии 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. Установка и тестирование пакетов
    • /!\ Тест не прошёл

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

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

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

Сборка происходит локально, соответствующее хранилище добавлено в системный sources.list, поэтому достаточно между 20-build и 30-push сделать dist-upgrade, чтобы начать тестировать собранные пакеты.

Accidental features