Международная конференция разработчиков
и пользователей свободного программного обеспечения

Обзор Open Build Service

Denis Pynkin, Minsk, Belarus

LVEE Winter 2012

Open Build Service (OBS) — is an open and complete distribution development platform. It provides the infrastructure to easily create and release open source software for openSUSE and other Linux distributions on different hardware architectures. This article describe the architecture and usage of private OBS instance.

Введение

Зачастую коммерческие проекты базируются на открытых платформах, таких, как различные дистрибутивы Linux. Это означает, что для обеспечения поддержки своего продукта вендору часто необходимо самостоятельно заниматься поддержкой открытых проектов, входящих в его продукт.

Даже при условии сокращения количества поддерживаемых пакетов до минимума, необходимого для работы коммерческого программного обеспечения, инженерам приходится заниматься поддержкой сотен сторонних пакетов и приложений.

Системы автоматической сборки значительно облегчают жизнь разработчикам, вынужденным обеспечивать платформу для разработки как открытого, так и коммерческого программного обеспечения. Одна из лучших по совокупности параметров и возможностей система автоматической сборки общего назначения — это Open Build Service, умеющая работать со множеством различных дистрибутивов.

Архитектура

Open Build Service можно разделить на серверную часть и клиентскую1.
OBS поддерживает сборку следующих целей:

  • rpm/spec;
  • deb/dsc;
  • KIWI image.

Серверная часть

Основные задачи, которые решает серверная часть:

  • обеспечивает доступ к исходному коду приложений;
  • предоставляет ресурсы для сборки пакетов;
  • предоставляет инфраструктуру для публикации пакетов;
  • обеспечивает взаимодействие между разработчиками.

В свою очередь OBS-сервер состоит из 2-х частей:

  • фронтэнд
    • публичный API для различных клиентов;
    • доступ к исходникам;
    • доступ к логам и результатам сборки;
    • доступ к собранным пакетам;
    • контроль процесса сборки пакетов;
    • управление пользователями.
  • бакэнд
    • хранилище исходного кода;
    • сборочная “ферма”;
    • запуск сборки в соответствующем окружении;
    • репозитории собранных пакетов;
    • доступ к логам и результатам сборки;

Клиентская часть

“Официально” поддерживаются 2 клиента: web (входящий в фронтэнд сервера) и утилита osc для работы из командной строки. Кроме того существуют и другие — например для Android’а или графический клиент, написанный на C#.

Клиент osc позволяет произвести сборку пакета или дискового образа на локальной машине.

Как для локальной сборки, так и на сборочной “ферме” используется одинаковый набор скриптов build, в задачу которого входит связь с сервером, получение необходимых бинарных и/или пакетов с исходным кодом, организация изолированной сборочной среды (поддерживается изоляция с помощью chroot, kvm, xen и др.) и, при необходимости, отправка результата на сервер.

Проекты

Проекты — это организационная еденица в OBS, представляющая собой единую площадку с общими правилами сборки для всех пакетов.

Проект включает в себя:

  • конфигурацию проекта, включая макросы и определения используемые в сборочной среде;
  • пакеты — исходный код и правила сборки программного обеспечения и/или дискового образа;
  • сборочные цели — дистрибутивы, на базе которых OBS будет пытаться собрать пакеты, входящие в проект.

Частный OBS-сервер

Для организации частной сборочной системы рекомендуется2 использовать специально подготовленные образы, которые можно скачать отсюда: http://download.opensuse.org/repositories/openSUSE:/Tools/images/.

После установки, такой частный сборочный сервер можно использовать в одном из двух режимов: с подключением к оригинальному сервису и в изолированном режиме.

При использовании подключения к оригинальному сервису, появляется возможность использовать любые проекты, представленные на https://build.opensuse.org/ в качестве базы для cвоих разработок. Такой режим наилучшим образом подходит для организации открытых проектов.

Для коммерческой разработки организация полностью автономной и независимой системы сборки программного обеспечения является обязательным требованием. Для таких проектов наилучшим образом подойдет изолированный режим работы. В отличие от предыдущей модели, здесь придется не только организовывать саму систему сборки, но и самостоятельно создавать
и “базовую” часть3 — фактически организовывать полную либо частичную пересборку дистрибутива.

Библиография

1 Overview about the idea of the Build Service and its architecture.
http://en.opensuse.org/images/8/8e/FOSDEM Build Service.pdf

2 Build Service private installation
http://en.opensuse.org/openSUSE:Build Service private installation

3 Build Service private instance boot strapping
http://en.opensuse.org/openSUSE:Build Service private instance boot strapping

Лицензия Creative Commons
Текст тезисов доступен под лицензией Creative Commons Attribution-ShareAlike 3.0.

Presentation