Служба сборки/Учебное пособие
Материал из openSUSE.
Содержание |
Необходимые Знания
Вы должны иметь хорошее представление о процессе создания RPM, или некоторое представление о разных системах пакетов, таких как dpkg . Этот документ не может использоваться в качестве документации по работе с пакетами. Существует множество HOWTOs, руководств и книг , которые раскрывают эту тему .
Вы должны быть хорошо знакомы со средой разработки исходного кода , который использует Ваш проект для Вашего пакета . Build Service может работать с некоторыми обычными ошибками и возможно сообщит Вам о проблемах в Вашем исходном коде через логфайлы и простые сообщения об ошибках . У нас есть buildservice-рассылка, которая может быть источником помощи и советов. Однако, решение о том какие патчи применять, какие использовать флаги компиляции и т.д в конце концов остается за Вами .
Требования
Чтобы использовать Build Service Вы должны иметь учетную запись для входа ;-)
Ваша учетная запись buildservice является также учетной записью для wiki/bugzilla. Чтобы её создать смотрите ссылку сверху страницы.
После создания учетной записи wiki/bugzilla, Вам нужно перейти на http://build.opensuse.org/ и войти под своей учетной записью. При первом входе, Вы должны будете заполнить все предоставленные формы и рассказать зачем Вы хотите присоединиться и, что вы хотите внести в пакет. Затем Вы должны подождать пока Ваша учетная запись будет активирована. Пока Вы ждете, можете подписаться на рассылку opensuse-buildservice и получить короткие инструкции. Просто скажите нам свое имя и что нибудь о проекте, который Вы хотите создать и поддерживать (немного слов о Вашем умении создавать пакеты тоже будет приветствоваться).
Если Вы хотите протестировать и/или собрать Ваши пакеты дома (хорошая идея!) Вы могли бы посмотреть в SUSE Build Tutorial, чтобы получить общее представление о требованиях для среды локальной сборки.
Технология
Следующие шаги обрисуют нормальную технологию для создания проекта и добавления в него пакетов. Конечно в реальной ситуации, у Вас может не получиться какой либо шаг и Вы должны будете повторить его, пока он не пройдет удачно. Эта схема должна дать Вам просто понятие о том, чего мы добиваемся.
Мы покажем Вам два возможных способа :
- способ Вебклиент
- способ Командной строки клиента (мы будем использовать osc для примера )
Шаг первый - Вход
Если у Вас уже есть учетная запись Build Service - этот шаг не доставит трудностей.
- Вебклиент: откройте http://build.opensuse.org/ и нажмите на одну из ссылок "List of All Projects" или "Watched Projects". Вас попросят указать имя пользователя и пароль для openSUSE Build Service. После этого, Вы увидите список Projects и в верхнем правом углу будет ссылка на Ваш "Home Project". Пожалуйста перейдите по этой ссылке.
- Командная строка: Сначала , Вы инсталлируете Commandline Client на Ваш локальный Client. Вы можете найти osc-пакеты для разных дистрибутивов в openSUSE-Tools репозитории прорамм (да: это еще Build Service Project). Выберите Ваш любимый менеджер пакетов для инсталляции osc пакета . Заметка : для SUSE Linux 9.3 или более поздней версии Вы будете нуждаться в python-elementtree и python-urlgrabber, от сюда.
После этого с помощью команды "cd" перейдите в директорию, которую Вы хотите использовать для размещения файлов проекта. Теперь все знакомые с SVN должны прощупать "at home": попробуйте проверить Ваш домашний проект используя
osc checkout home:<username>
(пожалуйста замените <username> на ваш логин ). Вас запросят имя пользователя и пароль - затем osc попробует проверить пакеты в Вашей домашнем проекте и создаст новую директорию с именем home:<username>. Вы можете редактировать Ваши настройки в файле ~/.oscrc.
Шаг Второй - Создание и Обновление пакетов
В действительности нет необходимости в старте из вашего домашнего проекта - так как Вы можете обновить пакеты прямо в существующий проект, но это хорошая точка старта и ни кто не использует домашний проект другого пользователя как зависимую сборку. Так Вы можете использовать Ваш домашний проект как "место развлечений" для теста пакетов, которые будут переправлены в другие проекты, если все будет хорошо.
- Вебклиент: Просто нажмите на ссылку [Add Package] . Вы должны будете заполнить следующие три текстовых поля : "Name", "Title" и "Description". Просто введите имя пакета в поле "Name", его краткое описание в поле "Title" и полное описание в поле "Description".
- Затем нажмите на ссылку [Add File] для добавления файлов для Вашего пакета . Вы должны будете обновить исходный код Вашего пакета и по крайней мере специальный файл .
- Командная строка:
osc createpac home:<username> <packagename>
osc откроет временный xml файл в Вашем любимом редакторе и Вы сможете просто добавить некоторые вещи (Name, Title и Description) как было описано выше . Теперь вызовете
osc
и Вы получите новую директорию с именем Вашего нового пакета .Для добавления файлов через командную строку , просто 'cd в новую папку , скопируйте важные файлы и вызовите
osc add *
это пометит файлы в директории для следующего утверждения . Для подтверждения файлов , вызовите
osc commit
Шаг Три - Добавление Репозиториев
Сейчас Вы должны решить для какого репозитория Вы соберете пакет .
- Вебклиент: Просто нажмите на [Add Repository] и выберите один из возможных Distributions и Architectures.
- Командная строка: вначале получите список возможных репозиториев
osc ls
затем отредактируйте метаданные Вашего пакета ;
osc editmeta home:<username> <packagename>
and add the repository like:
<repository name="SUSE_Linux_Factory"> <path project="SUSE:Factory" repository="standard" /> <arch>x86_64</arch> <arch>i586</arch> </repository>
Заметка : repository="standard" это только для будущих расширений ( ветвей репозиториев ).
Шаг Четвертый : Сборка Вашего пакета
Обычно Ваш пакет запланирован для сборки после передачи или после изменения какого-нибудь файла . Если требуемый пакет был пересобран , Ваш пакет будет так же пересобран автоматически . Вы так же можете сделать это в ручную , если Вы нуждаетесь в этом (но пожалуйста не делайте этого слишком часто чтобы сохранить возможность сборки других пакетов ).
Локальная сборка Вашего пакета
Иногда быстрее собрать пакет на локальной машине , вместо того чтобы ждать пока это сделает buildservice. osc поддерживает локальную сборку Вашего пакета , если Ваши аппаратные средства поддерживают это (на x86_64 Вы можете собрать для i586 и x86_64, на i586 только для i586).
osc build <platform> <arch> <specfile> [--clean|--noinit]
Если Вы начнете сборку как обычный пользователь ( хорошая идея !), у Вас будет запрошен пароль администратора Вашей локальной машины . Вы можете обойти это , если Вы добавите Вашего пользователя в /etc/sudoers и отредактируете Ваш ~/.oscrc :
su-wrapper: sudo
osc соединиться с сервером-репозиторием и загрузит все нужные RPM в /var/tmp/osbuild-packagecache/<plattform>/<repository>/<arch> как кэш директорию . (Если у Вас есть готовый репозиторий , Вы можете связать RPM в этой директории чтобы избежать лишнего трафика .)
Например для репозитория openSUSE_10.2 Вы можете использовать Retail Box DVD iso как показано ниже :
mount openSUSE-10.2.iso /mnt -o loop mkdir -p /var/tmp/osbuild-packagecache/openSUSE\:10.2 ln -s /mnt/suse /var/tmp/osbuild-packagecache/openSUSE:10.2/standard
Это даст Вам репозиторий для x86 так же как и x86_64
Теперь пакеты могут быть собраны локально , как :
osc build openSUSE_10.2 i586 beryl-core-snapshot.spec
osc создаст chroot среду в /var/tmp/osc-build-root/ и начнет собирать ваш пакет . Если у Вы сделали только маленькие изменения , Вы можете избежать пересборки с помощью опции --noinit. Если Вы увидите что ваша среда chroot не работает как надо , Вы можете включить полную пересборку с помощью опции --clean.
Как только Ваш пакет будет собран в этой среде chroot , Вы можете найти результат в /var/tmp/osc-build-root/usr/src/packages/RPMS/.
Законченный лог файл Вашей локальной сборки сохранен в /var/tmp/osc-build-root/.build.log.
Сборка Вашего пакета в build service
Сборка в build service легче чем локальная сборка - но возможно дольше .
- Вебклиент: Если Вы хотите делать пересборку вручную , просто нажмите на [Trigger Rebuild] внизу сайта пакета .
- Командная строка: С опциональными аргументами <repo> и <arch> , пересборка может быть лимитирована определённым репозиторием или архитектурой .
osc rebuildpac <project> <package> [<repo> [<arch>]]
|
Шаг Пятый: Проверка лог-файлов
Buildservice создает один большой лог-файл для каждой сборки пакета .
- Вебклиент: Просто нажмите на ссылку [Build Log] в package view.
- Командная строка: Вы имеете много разных вариантов - основывающихся на Ваших нуждах . Если Вы находитесь в директории пакета , no packagedir must be added to the commandline.
osc prjresults [packagedir]
Показывает обобщенные результаты сборки всего проекта.
osc results [packagedir]
Показывает результаты для одного пакета.
osc log <platform> <arch>
Показывает лог-файл пакета(вы должны быть в дирректории этого пакета).
Категории: Служба сборки | Учебное пособие | Howto | Developer | IW

