5192
Комментарий:
|
6676
|
Удаления помечены так. | Добавления помечены так. |
Строка 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 → пакеты и спецификации → сборочницы
- Хранилища и инструменты по упрощению сборки в них
Человек не должен работать!
Двигатели прогресса
Пролегомены к идеальному сообществу роботов
Диаграмма состояний пакета:
Ещё одно изолированное состояние: вечно свежий.
Сравнить версии
Не меняет дерево исходников.
Получить версию в целевом репозитории Vt
Получить версии в development-репозиториях Vd1 ... VdN
Получить версию в upstream Vu
Upstream исчез, сменил формат хранения и т. п.
Версия в development-репозиториях может быть выше актуальной, это признак ручной сборки
Допуск к обновлению при условии Vu > max(Vt, Vd1, ... , VdN)
Обновить
- Получение актуальных исходников:
- Pull из целевого репозитория
- Pull из development-репозиториев
- Получение Upsream-исходников
Upstream исходники не отдал, ошибка скачивания и т. п.
- Формирование сборочной ветки
- Обновление старых исходников новыми
Скрипты обновления не справились с задачей, вместо upstream скачался мусор и т. п.
- Модификация служебных файлов (*.spec, .gear/* ...)
Скрипты обновления не справились с задачей, информация о новом пакете неверна и т. п.
- Оформление коммита
- Обновление старых исходников новыми
Допуск к сборке
Собрать
- Тестовая сборка сборочной ветки в целевое хранилище
- Получение журнала сборки
Старым способом не собирается, плохо обновился spec и т. п.
Пострадало качество сборки: unpackaged files, предупреждения и т. п.
- Формирование бинарного хранилища для тестирования
- Формальное тестирование
Пакет на устанавливается, не прошли дополнительные тесты
Допуск к проверке
Проверить
Проверяет человек (тестер)
- Подключение тестового хранилища
- Установка и тестирование пакетов
Тест не прошёл
Допуск к публикации
Критика идеального сообщества роботов
- Асинхронный переход из состояния в состояние: 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'
?побочные эффекты
- Разделение на тестера и сборщика
- Автоматизация каждого процесса (в т. ч. тестировния)
- ...