Создание собственных сборочных клиентов для АБФ
Содержание
Сборочный сервер
Определения
- Проект — программное обеспечение, документация, темы оформления с мета-информацией о нем, готовое для сборки и распространения в виде пакета;
- Группа — объединение пользователей для работы над совместными проектами. Позволяет управлять правами участниками сразу на нескольких проектах, принадлежащих группе.
- Платформа — набор репозиториев, представленный в системе как единое целое. Используется для выпуска разных продуктов на одной группе пакетов.
- Репозиторий — набор проектов, объединенных по определенным критериям: основные, дополнительные, несвободные и т.д.
- Продукт — собранный на базе платформы дистрибутив ОС(ISO образ).
- Обратная зависимость (back build dependence) - зависимость у пакета, обозначающая, кому для сборки нужен данный пакет
- Дерево обратных зависимостей (back build dependence tree) - дерево зависимостей, рекурсивно построенное по принципу back build dependence
Основные компоненты
- Веб интерфейс
- Сборочное ядро
- Сборочный клиент
- Модуль сборки образов
Сборочное ядро
Служит для:
- управления сборочными клиентами
- создания/удаления платформ
- создания/удаления репозиториев
- создания/удаления сборочный заданий
- перекладывания контейнеров в репозиторий
- создания/удаления проектов
- вычисления “обратных” зависимостей для проекта (построение дерева обратных зависимостей)
- вычисления прямых зависимостей для проекта
Все команды для сборочного ядра приходят с веб интерфейса по XML-RPC
Сборочный сервер обрабатывает.выполняет запрос и отправляет результаты на веб интерфейс.
Существуют 2 типа сборочных платформ:
- Основные платформы
- Пользовательские платформы
Основные платформы предназначены для хранения и сборки дистрибутивов
Пользовательские платформы предназначены для хранения и сборки пользовательских проектов под разные дистрибутивы
Сборка проекта
- С веб интерфейса приходит запрос на сборку
- Сборочное ядро проверят возможность сборки данного проекта и добавляет задание в очередь
- Далее сборочное задание обрабатывается, при необходимости строится список обратных зависимостей
- Готовое сборочное задание попадает в очередь для принятия сборочными клиентами
- При подключении сборочный клиент сообщает под какой дистрибутив он может осуществить сборку и под какие архитектуры
- Клиент получает задание на сборку
- После сборки с веб интерфейса приходит команда на публикацию контейнера.
- Сборочный сервер проверяет возможность выполнения данной операции и возвращает результат на веб интерфейс. Задание помещается в очередь
- При публикации все собранные пакеты переносятся в репозитории с учетом их принадлежности тому или иному репозиторию. При этом обновляется информация о пакетах в БД.
- Результат переноса контейнера в репозитории отправляется на веб интерфейс
Сборочный клиент
Служит для сборки проектов. Сборочные клиенты различаются:
- по поддерживаемым сборочным архитектурам. Под какие архитектуры сборочный клиент может собрать проект
- по типам дистрибутива, под которые данный сборочный клиент может собрать проект
Принцип работы:
- Сначала сборочный клиент забирает сборочное задание с ядра. Далее по очередности выполняется сборка каждого проекта в задании.
Порядок сборки проекта:
- Отправить статус что проект начал собираться на ядро
- Забрать из гит репозитория исходники проекта и поднять релиз в spec файле (осуществляется универсальным скриптом для rpm дистрибутивов)
- передать изменения обратно в гит и создать src.rpm
- Создать список необходимых репозиториев в зависимости от типа сборки (сборка в персональный репозиторий сборка в основной репозиторий и тд)
- Собрать проект и выложить в контейнер обновив мета-дату
- Отправить статус сборки
Если присутствуют циклические зависимости, сборка происходит повторно с подключением предыдущих результатов
После сборки всех проектов происходит автоматическое тестирование результатов сборки. Оно представляет собой попытку установки всех пакетов в chroot. Проверка нужна для контроля зависимостей у собранных пакетов
После сборки всех проектов и автоматического тестирования результаты отправляются на сборочное ядро
- Построение chroot происходит в tmpfs для ускорения работы
- Репозитории подключаются по http
- Результаты сборки можно увидеть через веб интерфейс
Модуль сборки образов
Служит для сборки образов ОС. Представляет собой xml rpc сервер, который принимает с веб интерфейса задания на сборку дистрибутива.
В веб интерфейсе отображаются необходимые для сборки скрипты и файлы. Кроме того, есть возможность загружать архивы с дополнительными файлами требуемыми для сборки образа.
Процесс сборки:
- С веб интерфейса приходит задание на сборку
- Задание попадает в очередь
- Перед началом выполнения задания на веб интерфейс отправляется статус о начале сборки
- Скачивается архив с дополнительными файлами с веб интерфейса
- Запускается скрипт сборки
- После сборки отправляется результат на веб интерфейс
Подключение дополнительных дистрибутивов к сборочному серверу
Для сборки своего дистрибутива необходимо создать свой сборочный клиент и свой модуль сборки образов (изменение шаблонов. Для получения шаблонов и добавления своего дистрибутива необходимо отправить запрос на info@rosalab.ru , указав название дистрибутива.
Далее вам будет выслан архив с исходными кодами шаблонов, документация по API, руководство по изменению шаблонов и контакты инженера из ABF.
Готовый сборочный клиент и модуль сборки дистрибутива необходимо отправить инженеру ABF на аудит. После этого совместно с командой ABF производится создание инфраструктуры для вашего дистрибутива. И совместно с вами тестирование сборочного клиента и модуля сборки дистрибутива.