Open Build Service — создаём свои репозитории

от автора

image
Open Build Service – программное обеспечение с открытым исходным кодом, распространяющееся под лицензией GPL, которое заметно упрощает организацию собственных репозиториев для популярных дистрибутивов Linux и сборку бинарных пакетов.

В статье я приведу способ быстрой установки серверной части на OpenSuse 12.1, настройки окружения для пользователя и дам перечень полезных команд для работы из консоли. Вы, конечно, можете использовать готовые образы Open Build Server, которые можно скачать на сайте разработчика. Но, к примеру, на VirtualBox, установка с этих образов не идёт. В любом случае, когда сам проходишь путь установки, всегда легче разобраться как устроена система. Итак, приступим.

Прежде всего, нужно убедиться, что у вас подключен репозиторий Oss (это основной репозиторий OpenSuse, но почему-то он не включен сразу в новых версиях). Он необходим для установки таких пакетов как Apache2, MySQL-server и т.д.

#zypper addrepo download.opensuse.org/distribution/12.1/repo/oss/ openSUSE-12.1-Oss 

Добавим репозиторий для установки, собственно, самого Open Build Server.

#sudo zypper addrepo zypper addrepo download.opensuse.org/repositories/openSUSE:/Tools:/Unstable/openSUSE_12.1/openSUSE:Tools:Unstable.repo #sudo zypper refresh 

Теперь можно начать установку.

#sudo zypper in obs-server obs-api 

Установка потянет за собой пачку необходимых пакетов, таких как apache, mysql-server, rubygems и т.д. Всего примерно на 90Мб.
Когда установка завершена, внесём пару изменений в файл конфигурации. Для этого открываем /etc/sysconfig/obs-server, находим и приводим их к следующему виду строки:

OBS_SRC_SERVER=«localhost:5352» OBS_REPO_SERVERS=«localhost:5252» 

Запускаем сервисы:

rcobsrepserver start rcobssrcserver start rcobsscheduler start rcobsdispatcher start rcobspublisher start 

Переходим к созданию баз данных и их наполнению:

mysql> create database api_production; mysql> create database webui_production; mysql> create user 'obs'@'%' identified by 'obspassword'; mysql> create user 'obs'@'localhost' identified by 'obspassword'; mysql> GRANT all privileges ON api_production.* TO 'obs'@'%', 'obs'@'localhost'; mysql> GRANT all privileges ON webui_production.* TO 'obs'@'%', 'obs'@'localhost'; mysql> FLUSH PRIVILEGES; 

Настроим подключение к mysql API и WebUI. Для этого в любом удобном редакторе открываем файлы /srv/www/obs/api/config/database.yml и
/srv/www/obs/webui/config/database.yml, находим и редактируем следующий блок:

production: adapter: mysql2 database: api_production username: obs password: obspassword 

Наполним базы и установим необходимые права на папки tmp и log

cd /srv/www/obs/api/ sudo RAILS_ENV=«production» rake db:setup sudo chown -R wwwrun.www log tmp cd /srv/www/obs/webui/ sudo RAILS_ENV=«production» rake db:setup sudo chown -R wwwrun.www log tmp 

Настроим Apache. Установим модуль apache2-mod_xforward. Для этого подключим ещё один репозиторий.

zypper addrepo download.opensuse.org/repositories/openSUSE:/Tools/SLE_11/ Tools-SLE zypper refresh zypper in apache2-mod_xforward 

Подключим необходимые модули в /etc/sysconfig/apache2.

APACHE_MODULES="… passenger rewrite proxy proxy_http xforward headers" 

Включим поддержку SSL и сгенерируем сертификаты. Снова открываем /etc/sysconfig/apache2 и находим строку:

APACHE_SERVER_FLAGS="-DSSL" 

mkdir /srv/obs/certs openssl genrsa -out /srv/obs/certs/server.key 1024 openssl req -new -key /srv/obs/certs/server.key -out /srv/obs/certs/server.csr openssl x509 -req -days 365 -in /srv/obs/certs/server.csr -signkey /srv/obs/certs/server.key -out /srv/obs/certs/server.crt cat /srv/obs/certs/server.key /srv/obs/certs/server.crt > /srv/obs/certs/server.pem 

Установим use_xforward:true в /srv/www/obs/webui/config/options.yml и /srv/www/obs/api/config/options.yml

Теперь один очень важный нюанс. Открываем файл /srv/www/obs/webui/config/environments/production.rb, ищем строчку CONFIG[‘frontend_host’] = «localhost» и вместо localhost пишем имя сервера, которое мы указали при генерации сертификата.
Если этого не сделать, то при попытке открыть WebUI или API, будете получать ошибку “ hostname does not match the server certificate”.

Выполним рестарт.

rcapache2 restart rcobsapidelayed restart 

Проверяем работоспособность.
После перезапуска Apache API должен быть доступен по адресу https://servername:444.
WebUI будет доступен по адресу https://servername.
Логин и пароль по умолчанию Admin/opensuse.
Подробно останавливаться на использовании WebUI не буду. Интерфейс интуитивно понятный и удобный.

Лучше больше внимания уделим использованию OSC (openSUSE Build Service Commander). Данный пакет доступен практически для всех дистрибутивов Linux. С его помощью мы сможем создавать проекты, пакеты, загружать исходные файлы.
Я пользуюсь Ubuntu, поэтому для установки использую:

apt-get install osc 

Следующим шагом нужно создать файл конфигурации, который необходим для работы с нашим сервером. Создать его можно в автоматическом режиме, используя любую команду osc, к примеру, osc ls. Но проще создать в корне домашней директории файл .oscrc следующего содержания:

.oscrc

 [general] apiurl = https://servername:444 use_keyring = 0  [https://servername:444] user = Admin pass = opensuse keyring = 0 

Вместо servername пишем имя своего сервера. Имя опять же должно совпадать с указанным во время создания сертификата, иначе получите ошибку «Certificate Verification Error: Peer certificate commonName does not match host»
Проверяем подключение, выполнив команду osc ls (вывести листинг проектов).
Принимаем сертификат.

The server certificate failed verification Would you like to 0 — quit (default) 1 — continue anyways 2 — trust the server certificate permanently 9 — review the server certificate Enter choice [0129]: 2 

Попробуем создать новый проект.

osc meta prj -e MyProject  

где MyProject – название вашего проекта.
После этого откроется xml-файл конфигурации нового проекта, где вам нужно будет, как минимум, указать Title и Description. Здесь же можно раскомментировать строки, в которых указано под какую систему будут собираться пакеты в данном проекте.
Пример xml конфигурации для проекта:

project.xml

 <project name="MyProject">   <title>MyProject</title>   <description>MyTestProject</description>   <person role="maintainer" userid="Admin" />   <person role="bugowner" userid="Admin" />   <publish>     <disable />   </publish>   <build>     <enable />   </build>   <debuginfo>     <disable />   </debuginfo>   <repository name="openSUSE_Factory">     <path project="openSUSE:Factory" repository="standard" />     <arch>x86_64</arch>     <arch>i586</arch>   </repository>   <repository name="openSUSE_11.2">     <path project="openSUSE:11.2" repository="standard"/>     <arch>x86_64</arch>     <arch>i586</arch>   </repository>   <repository name="openSUSE_11.1">     <path project="openSUSE:11.1" repository="standard"/>     <arch>x86_64</arch>     <arch>i586</arch>   </repository>   <repository name="Fedora_12">     <path project="Fedora:12" repository="standard" />     <arch>x86_64</arch>     <arch>i586</arch>   </repository>   <repository name="SLE_11">     <path project="SUSE:SLE-11" repository="standard" />     <arch>x86_64</arch>     <arch>i586</arch>   </repository> </project> 

Создание пакета происходит по такой же схеме

osc meta pkg -e MyProject MyPackage 

где MyProject – название вашего проекта, MyPackage – ваш новый пакет.
Теперь, когда проект и пакет созданы, нам нужно отправить на сервер файлы исходников, из которых будут собираться бинарные пакеты.
Сначала создадим локальную копию проекта у себя на рабочей машине.

osc co MyProject  

После этого у вас должна появиться иерархия каталогов MyProject/MyPackage. Помещаем свои файлы исходников в каталог MyPackage, после чего добавляем их в контроль версий командой:

osc add MyProject/MyPackage/MyFiles 

и закачиваем на сервер

osc ci MyProject/MyPackage -m «Your comment» –skip-validation 

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

osc results MyProject/MyPackage 

Теперь получим линк для .repo файла проекта. Для этого нужно перейти в каталог проекта и выполнить команду:

osc repourls 

Всё, теперь мы можем подключать наши репозитории к Linux-машинкам и устанавливать свои пакеты.

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

#Вывести список проектов. osc ls  #Создать проект. osc meta prj -e ProjectName  #Создать пакет. osc meta pkg -e ProjectName PackageName  #Удалить проект или пакет. osc rdelete ProjectName/PackageName  #Сделать локальную копию проекта. osc co ProjectName  #Добавить новые файлы в контроль версий. osc add ProjectName/PackageName/YourFiles  #Удалить исходные файлы. osc rremove ProjectName PackageName SourceName osc update ProjectName  #Подтвердить изменения в проекте. osc ci ProjectName -m «Your comment» --skip-validation  #Подтвердить изменения в пакете. osc ci Project Name/Package Name -m «Your comment»  #Показать результат сборки osc results Project Name/Package Name  #Показать лог сборки (выполнять в каталоге пакета). osc buildlog Platform Arch (osc buildlog xUbuntu_12.04 i586)  #Показать URLs .repo файлов (выполнять в каталоге проекта) osc repourls 

ссылка на оригинал статьи http://habrahabr.ru/post/160609/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *