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 попробовал собрать обновления.