Краткое руководство по работе в сборочной среде ABF
Содержание
Определения
- ABF — система для разработки и управления жизненным циклом дистрибутивов: от исходного кода до ISO-образов.
- Проект — программное обеспечение, документация, темы оформления с мета-информацией о нем, готовое для сборки и распространения в виде пакета;
- Группа — объединение пользователей для работы над совместными проектами. Позволяет управлять правами участниками сразу на нескольких проектах, принадлежащих группе.
- Платформа — набор репозиториев, представленных в системе как единое целое. Используется для выпуска разных продуктов на одной группе пакетов.
- Репозиторий — набор проектов, объединенных по определенным критериям: основные, дополнительные, несвободные и т.д.
- Продукт — собранный на базе платформы дистрибутив ОС (ISO образ).
Проекты
Проект — программное обеспечение, документация, темы оформления с мета-информацией о нем, готовое для сборки и распространения в виде пакета.
Создание нового проекта
Перейдите на страницу - My repository и нажмите вкладку New project
Будет отображена следующая страница:
На странице создания проекта необходимо заполнить следующие поля:
- Category — выбрать категорию, к которой относится приложение (опциально);
- Name — имя проекта (без пробелов);
- Visibility — будет ли проект публичным или приватным (доступен только ограниченно числу пользователей);
- Description — краткое описание проекта (опциально);
- Tracker on — включить ли проектный трекер задач;
Вы можете импортировать SRPM пакет сразу при создании проекта, нажав на кнопку Загрузить и выбрать SRPM файл для загрузки. Нажмите кнопку Сохранить и проект будет создан. Исходный код пакеты, если он был успешно распакован, будет доступен в гит-репозитории в ветке import.
Форк проекта
Перейдите во вкладку Projects и воспользуйтесь формой поиска введите имя проекта, который хотите найти.
Если проект или проекты с таким именем существуют, то будут выведены. Проектов с одним именем может быть много, принадлежащие разным авторам или группам.
Выбрав интересующий проект, нажмите на его имени. Перед вами откроется сводная информация о проекте.
Исходный код проекта можно посмотреть во вкладке Source.
Чтобы получить исходный код проекте к себе, просто воспользуйтесь адресом git-репозитория, указанным на строке Repository (если вы не являетесь участником проекта или его владельцем, то данная ссылка будет представлять возможность только получить исходный код, но не даст вернуть его изменения обратно).
Для создание форка проекта нажмите на кнопку Fork. Система попросит подтвердить это действие и в случае утвердительного ответа вы получили полную независимую копию этого проекта в свое распоряжение и сможете вносить в него свои изменения, а также собирать его в свой репозиторий.
Увидеть свою копию данного проекта можно на вкладке My repository, где отображаются все ваши проекты, а также данные для подключения вашего персонального репозитория, куда вы можете собирать свои проекты сразу после регистрации на сайте.
Сборка проекта
Сборка проекта - это превращение его исходных кодов в пакет, который затем может быть размещен в репозитории.
Перейдите на вкладку My repository и выберите проект, который вы хотите собрать.
Нажмите на его имени, затем перейдите на вкладку Build.
Для сборки проекта необходимо указать следующие параметры:
- версия проекта — версии для выбора формируются следующий образом: последние коммиты каждой ветки git-репозитория проекта представлены как latest_<название ветки>, также в списке доступных версий есть все теги git-репозитория;
- платформа — это набор репозиториев, содержащих множество проектов. Платформами, к примеру, являются Mandriva2010.2, 2011, Cooker. Пакет может быть одновременно собран под несколько платформ, если он собирается в персональный репозиторий пользователя;
- тип обновления — параметр, указывающий важность обновления проекта для конечных пользователей. Может принимать значения: security, bugfix, enhancement, recommended и newpackage;
- пересборка с зависимостями - определяет, будет ли пакет собран с пересборкой обратных зависимостей или нет. Данный механизм пересобирает все пакеты, зависящие от собираемого на этапе сборки и призван обеспечить полную пересобираемость репозитории на самом себе;
- Архитектура - архитектура для сборки проекта. Может быть выбрана как одна, так и несколько. Типовыми для Mandriva являются i586 и x86_64;
- репозиторий для сохранения — репозиторий, куда будут опубликованы пакеты в случае успешной сборки. Для того, чтобы собирать проект в репозиторий платформы, ваш проект должен быть добавлен администратором платформы. В случае выбора репозитория основной платформы список платформ, для которых собирается, будет уменьшен до одного, которому и принадлежит этот репозиторий, автоматически;
- включенные репозитории - параметры сборки, определяющие, какие репозитории выбранной платформы будут использованы для сборки проекта. Таким образом можно собирать пакет, подключив, например, только main, или main и contrib;
- автоматическая публикация - в случае успешной сборки публиковать ли пакет автоматически в репозитории. Если параметр не выбран, проект будет собран, но не опубликован, при этом опубликовать его можно и позднее.
После настройки всех параметров нажмите на кнопку Собрать и проект отправится на сборку, о чем будет показано уведомление.
Мониторинг сборки
Наблюдать за сборками, доступными для вас, можно на вкладке Task monitoring.
На данной странице отображаются все собираемые задания, к которым у вас есть доступ.
Основные статусы заданий на сборку:
- в очереди — проект ожидает своей очереди на сборку;
- собирается — начата сборка проекта;
- ошибка сборки — по каким-то причинам сборка проекта завершена с ошибкой, подробные сведения можно посмотреть в логах сборки, которые находятся по адреса контейнера;
- собран — пакет был успешно собран и готов для публикации в репозиторий;
- публикуется — пакет поставлен в очередь на публикацию в репозиторий;
- ошибка публикации — во время публикации произошла неожиданная ошибка. Можно попробовать снова опубликовать проект чуть позже;
- опубликован — пакет успешно размещен в репозитории, указанном в сборочном задании.
С помощью фильтров, доступных на странице, можно отобрать задания по определенным критериям.
Нажав на ID задания, можно перейти к подробной информации о конкретном сборочном задании:
Выводится подробная информация о сборочном задания, включая автора сборки, параметрах, собранных пакетах, текущем статусе, дате последнего получения информация.
В случае, если пакет не собрался или был собран, но не опубликован, в строке Container Path будет указан адрес контейнера, где хранится вся информация о процессе сборки, включая подробные логи каждого этапа. Так же хранятся собранные пакеты (если были собраны). Сам контейнер представляет собой репозиторий, который можно подключить и проверить пакеты до публикации в основном репозитории.
Работа с исходным кодом проекта с помощью Git
Весь исходные код проекта хранится в git-репозитории. Для работы потребуется адрес репозитория, который можно найти на странице конкретного проекта на строчке Repository. О том, как найти проект, рассказано в разделе Создание нового проекта
Для работы с которым применяются следующие команды:
- Получение исходного кода:
git clone <адрес репозитория>
- Будет запрошен пароль вашей учетной записи(в случае, если проект открытый, можно ввести пустой пароль).
- Переключение между ветками:
git checkout <название ветки>
- Фиксация изменений:
git commit -a -m “Описание коммита”
- Добавление новых файлов в проект
git add --all
- Загрузка изменений на сервер:
git push
- Будет запрошен пароль вашей учетной записи (для внесение изменений также требуется, чтобы у вас был доступ к изменению проекта, иначе изменения загружены не будут даже в случае успешной аутентификации)
- Получение изменений с сервера:
git pull
если вы получили ошибку вида:
error: Peer certificate cannot be authenticated with given CA certificates
env GIT_SSL_NO_VERIFY=true git clone
если вы получили ошибку вида:
error: RPC failed; result=22, HTTP code = 411
и повторите запрос, который привел к этой ошибке
Данных команд достаточно для базовой работы с кодом проекта.