Работа с Koji

Материал из База знаний проекта Russian Fedora

Перейти к: навигация, поиск

Koji - это сборочный сервис проекта Fedora, позволяющий собирать rpm-пакеты автоматически и единообразно. Koji использует утилиту mock, с помощью которой выполняет сборку каждого пакета в отдельном chroot-окружении.

Подробности(на англ.): Koji, Использование build-сервиса Koji.

В проекте Russian Fedora мы стараемся максимально воспроизвести все технологические процессы Fedora, в частности используем полностью аналогичный сервис Koji Russian Fedora.

Koji Fedora
Koji Russian Fedora


Содержание

Установка клиента

Web-интерфейс Koji используется в основном в read-only режиме. Для какой-то существенной работы с сервисом нам потребуется утилита koji Установить её можно как обычно:

# yum install koji

Конфигурация koji для Russian Fedora

По умолчанию koji настроена на работу со сборочным сервером Fedora. Плох тот майнтэйнер Russian Fedora, который не мечтает стать майнтэйнером апстрима, поэтому мы не будем удалять или изменять эту конфигурацию, а настроим koji на параллельную работу с двумя сборочными серверами.

Скачиваем конфигурационный файл для сервера Russian Fedora

# wget https://raw.github.com/RussianFedora/koji-setup/master/conf/koji.conf -O /etc/koji-rfr.conf

Устанавливаем сертификаты

После того как вы напишете в багтрекер тикет о добавлении пакета в репозиторий RussianFedora на ваш почтовый адрес будет выслан архив с четырьмя файлами сертификатов.

Файлы

client.crt
clientca.crt
serverca.crt

необходимо поместить в папку ~/.koji вашего пользователя (не рута!).

Файл username_browser_cert.p12 нужно импортировать в браузер (просто откройте его браузером и введите пароль, присланный в том же письме).

Создаем alias

Чтобы каждый раз не писать команду koji -c /etc/koji-rfr.conf заведем алиас:

$ echo "alias koji-rfr=\"koji -c /etc/koji-rfr.conf\"" >> ~/.bashrc

Для применения нового алиаса в текущем сеансе консоли надо выполнить.

$ . .bashrc

Проверяем что все корректно настроено

Получим текущий список целей для сборки

$ koji-rfr list-targets
Name                           Buildroot                      Destination                   
---------------------------------------------------------------------------------------------
dist-el6                       dist-el6-build                 dist-el6                      
dist-rfr-alpha16               dist-rfr-alpha16-build         dist-rfr-alpha16              
dist-rfr-rawhide               dist-rfr-rawhide-build         dist-rfr-rawhide              
dist-rfr13                     dist-rfr13-build               dist-rfr13                    
dist-rfr14                     dist-rfr14-build               dist-rfr14                    
dist-rfr15                     dist-rfr15-build               dist-rfr15                    
dist-rfr16                     dist-rfr16-build               dist-rfr16 

Запуск сборки

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

$ koji-rfr list-targets

scratch-сборка (черновик)

После установки сертификатов для Koji Russian Fedora, вы можете собрать с его помощью любой пакет из srpm. Для этого используйте команду:

$ koji-rfr build --scratch dist-rfr16 path/to/my_package.src.rpm

Это команда загрузит src.rpm-файл на сервер и выполнит сборку пакета из него для указанной цели. Результат - собранные бинарные пакеты и логи - будут доступны для скачивания через web-интерфейс http://koji.russianfedora.pro

Все собранные пакеты, в том числе src.rpm, будут доступны для скачивания по прямым ссылкам
Не используйте Koji для сборки пакетов, содержащих личные данные или данные, распространение которых запрещено лицензией (например, закрытые ресурсы для игр)

Сборка для выкладывания в репозиторий

Хеш коммита в интерфейсе GitHub

Пакеты, которые планируется выложить в репозиторий RussianFedora, собираются непосредственно из git-репозитория http://github.com/RussianFedora командой:

$ koji-rfr build <цель> git://github.com/RussianFedora/<репозиторий пакета>.git?#<хеш-коммита>

Например, команда

koji-rfr build dist-rfr16 git://github.com/RussianFedora/qutim.git?#fa19dc898b

соберет пакет qutim для RFRemix 16 из данных репозитория https://github.com/RussianFedora/qutim из версии заданной коммитом fa19dc898b. Хеш коммита можно узнать через web-интерфейс GitHub.

Командой

 koji-rfr build --scratch dist-rfr16 git://github.com/RussianFedora/qutim.git?#fa19dc898b

можно выполнить черновую сборку пакета из репозитория.

Дополнительно

После запуска сборки вы можете закончить сеанс или выйти из терминала. Сборка выполняется на сервере в автономном режиме.

Чтобы получить информацию о запущенных вами задачах на сервере выполните

$ koji-rfr list-tasks --mine

Отменить сборку можно командой

$ koji-rfr cancel <task-id>

Перезапустить остановленную ранее задачу с тему же параметрами:

$ koji-rfr resubmit <task-id>

Смотреть вывод логов по задаче в реальном времени:

$ koji-rfr watch-logs <task-id>

Другие команды и возможности koji вы можете найти запустив koji-rfr без параметров:

$ koji-rfr 

Удаление сборки

Сборки в koji не удаляются никогда. Это может повредить работу сборочного сервера.