openSUSE Build Service: процесс сборки
Содержание:
1. Введение;
2. Начало работы;
3.Процесс сборки (Вы читаете данный раздел);
4. Зависимости от других проектов;
5. Особенности сборки RPM и Deb.
Процесс сборки пакетов устроен достаточно просто: для каждой целевой системы OBS развертывает виртуальную машину (ВМ), куда устанавливает дистрибутив с минимальным сборочным окружением. Устанавливаются и пакеты, разрешающие зависимости времени сборки (указанные в секциях BuildRequires spec-файла при сборке RPM и Build-Depends/Build-Depends-Indep - для Deb).
Файлы проекта также копируются внутрь ВМ в директории, где их ожидает увидеть инструментарий сборки. После этого запускается собственно сборка. В случае успеха собранные пакеты извлекаются из ВМ и становятся доступными пользователю: к ним можно перейти, кликнув по нужному имени дистрибутива. Также пользователю предоставляется полный журнал событий, происходивших внутри ВМ, - для доступа к нему надо кликнуть на статус сборки пакета в дистрибутиве. Обратите внимание, что размер веб-формы для отображения журнала ограничен, и зачастую весь журнал в нее не помещается. В этом случае помогает пункт Download raw logfile, выдающий весь журнал в текстовом виде.
«Фишкой» OBS является автоматический перезапуск сборки в случае, если изменился один из файлов проекта либо один из пакетов, от которых проект зависит. Особого интеллекта OBS при этом не демонстрирует: например, даже если был изменен только spec-файл, используемый при сборке RPM-пакетов, то пересборка будет запущена как для RPM, так и для Deb-репозиториев. Отключить автоматическую пересборку (либо для конкретных репозиториев, либо сразу для всех) можно посредством соответствующих флагов в меню Repositories. Там же можно указать, следует ли делать ваши пакеты доступными для всех желающих и нужно ли собирать пакеты с отладочной информацией.
Важным аспектом работы системы является то, что один и тот же spec-файл используется во всех основанных на RPM дистрибутивах, а один и тот же набор файлов для скриптов dpkg - во всех основанных на Debian, причем в обоих случаях -на всех аппаратных платформах. Соответственно, составлять эти файлы надо так, чтобы они успешно работали во всех целевых системах, которые имеют тенденцию отличаться друг от друга и иногда довольно сильно. Для многих программ это достаточно просто, но в общем случае составление переносимых инструкций для сборки - нетривиальная задача. Увы, здесь OBS никакой помощи не оказывает - все ошибки приходится выявлять и править в ходе экспериментов.
1. Введение;
2. Начало работы;
3.
4. Зависимости от других проектов;
5. Особенности сборки RPM и Deb.
Процесс сборки пакетов устроен достаточно просто: для каждой целевой системы OBS развертывает виртуальную машину (ВМ), куда устанавливает дистрибутив с минимальным сборочным окружением. Устанавливаются и пакеты, разрешающие зависимости времени сборки (указанные в секциях BuildRequires spec-файла при сборке RPM и Build-Depends/Build-Depends-Indep - для Deb).
Файлы проекта также копируются внутрь ВМ в директории, где их ожидает увидеть инструментарий сборки. После этого запускается собственно сборка. В случае успеха собранные пакеты извлекаются из ВМ и становятся доступными пользователю: к ним можно перейти, кликнув по нужному имени дистрибутива. Также пользователю предоставляется полный журнал событий, происходивших внутри ВМ, - для доступа к нему надо кликнуть на статус сборки пакета в дистрибутиве. Обратите внимание, что размер веб-формы для отображения журнала ограничен, и зачастую весь журнал в нее не помещается. В этом случае помогает пункт Download raw logfile, выдающий весь журнал в текстовом виде.
«Фишкой» OBS является автоматический перезапуск сборки в случае, если изменился один из файлов проекта либо один из пакетов, от которых проект зависит. Особого интеллекта OBS при этом не демонстрирует: например, даже если был изменен только spec-файл, используемый при сборке RPM-пакетов, то пересборка будет запущена как для RPM, так и для Deb-репозиториев. Отключить автоматическую пересборку (либо для конкретных репозиториев, либо сразу для всех) можно посредством соответствующих флагов в меню Repositories. Там же можно указать, следует ли делать ваши пакеты доступными для всех желающих и нужно ли собирать пакеты с отладочной информацией.
Важным аспектом работы системы является то, что один и тот же spec-файл используется во всех основанных на RPM дистрибутивах, а один и тот же набор файлов для скриптов dpkg - во всех основанных на Debian, причем в обоих случаях -на всех аппаратных платформах. Соответственно, составлять эти файлы надо так, чтобы они успешно работали во всех целевых системах, которые имеют тенденцию отличаться друг от друга и иногда довольно сильно. Для многих программ это достаточно просто, но в общем случае составление переносимых инструкций для сборки - нетривиальная задача. Увы, здесь OBS никакой помощи не оказывает - все ошибки приходится выявлять и править в ходе экспериментов.