Updates builder
Updates-builder - это утилита для автоматического отслеживания обновлений ПО для пакетов и сборки новых версий в ABF.
Содержание
Исходный код
Исходный код можно посмотреть здесь: https://abf.rosalinux.ru/dsilakov/updates_builder/tree/master?
Пример
Возьмем в качестве примера пакет alleyoop. У нас в репозиториях лежит версия 0.9.7 и мы хотим посмотреть, есть ли обновления в апстриме:
$ updates_builder.py --run-one alleyoop <...> alleyoop-0.9.8 https://sourceforge.net/projects/alleyoop/files/alleyoop/alleyoop-0.9.8/alleyoop-0.9.8.tar.gz <...> Creating a new spec file Downloading file https://sourceforge.net/projects/alleyoop/files/alleyoop/alleyoop-0.9.8/alleyoop-0.9.8.tar.gz done
Ага, есть более новая версия! updates_builder ее скачал и поместил тарболл с исходниками в файловое хранилище ABF, обновил .abf.yml и spec-файл и запустил новую сборку.
Все эти изменения происходят в отдельной ветке Git-репозитория - auto_update. Сборка запускается для актуальной платформы ROSA Desktop Fresh, но результаты будут публиковаться в репозиторий import_personal. Более того, автоматическая публикация для этих сборок отключена - поэтому пакеты необходимо скачивать из соответствующих контейнеров (либо явно запускать публикацию).
Теперь надо убедиться, что новый пакет успешно собрался (если вы подписаны на оповещения по e-mail от ABF, то вам должно придти письмо с результатами сборки). Если сборка завершилась успешно, то вы можете скачать пакет и проверить, что он устанавливается и работает. Если все в порядке, то можно перенести изменения в основную ветку и собрать пакет в нормальный репозиторий.
Для начала, клонируем проект alleyoop с помощью консольного клиента ABF:
$ abf get alleyoop; cd alleyoop $ git checkout auto_update
Посмотрите обновленный файл .abf.yml, а также spec-файл; при необходимости, подправьте их.
После этого, переключитесь на ветку rosa2012.1 и перенесите изменения туда:
$ git checkout rosa2012.1 $ git merge auto_update $ abf put -m "LOG Updated to 0.9.8"
Вот и все! Теперь можно запустить сборку обновленного пакета для платформы rosa2012.1 из ветки rosa2012.1.
Технические подробности
Для получения информации о новых релизах, updates_builder использует сервис upstream-tracker.org. Если вы хотите, чтобы updates_builder отслеживал некоторый пакет, для которого нет ссылки на апстрим - сообщите об этом мэйнтейнеру сервиса upstream-tracker.org.
Обратите внимание, что для работы с ABF updates_builder использует консольный клиент из пакета abf-console-client.
Запуск в РОСЕ
Updates Builder запускается в РОСЕ на постоянной основе для пакетов, перечисленных на этой страничке:
http://wiki.rosalab.ru/en/index.php/Updates_builder_checklist
В случае успешной сборки, скрипты запуска автоматически формируют Pull Request на внесение изменений в основные репозитории.
В случае неудачи, скрипты анализируют журнал сборки и пытаются устранить некоторые виды тривиальных ошибок - такие, как изменение состава файлов, отсутствие сборочных зависимостей и так далее. После внесения изменений, сборка запускается повторно.
Исходный код скриптов, используемых для запуска Updates Builder, анализа его логов и исправления некоторых типов ошибок, можно найти здесь:
https://abf.rosalinux.ru/dsilakov/updates_builder_launcher
Статистика обновления пакетов в РОСЕ
На сайте Upstream Tracker можно найти сводную информацию по пакетам ROSA Desktop Fresh, для которых Updaets Builder попробовал собрать обновления.