Работа с Koji
Материал из База знаний проекта Russian Fedora
Koji - это сборочный сервис проекта Fedora, позволяющий собирать rpm-пакеты автоматически и единообразно. Koji использует утилиту mock, с помощью которой выполняет сборку каждого пакета в отдельном chroot-окружении.
Подробности(на англ.): Koji, Использование build-сервиса Koji.
В проекте Russian Fedora мы стараемся максимально воспроизвести все технологические процессы 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
Проверяем что все корректно настроено
Получим текущий список целей для сборки
$ 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.ru
Сборка для выкладывания в репозиторий
Пакеты, которые планируется выложить в репозиторий RussianFedora, собираются непосредственно из git-репозитория http://github.com/RussianFedora командой:
$ koji-rfr build <цель> git://github.com/RussianFedora/<репозиторий пакета>.git?#<хеш-коммита>
Например, команда
koji build dist-rfr16 git://github.com/RussianFedora/qutim.git?#fa19dc898b
соберет пакет qutim для RFRemix 16 из данных репозитория https://github.com/RussianFedora/qutim из версии заданной коммитом fa19dc898b. Хеш коммита можно узнать через web-интерфейс GitHub.
Командой
koji 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
