Project

General

Profile

Actions

Подготовка тегов

KOJI использует теги для идентификации и маркировки различных этапов рабочего процесса создания RPM.
Некоторые теги логически связаны вместе с одним и тем же потоком, например сборка для определенного целевого дистрибутива, например CentOS6.
Назовем этот целевой тег dist-centos7.

Но вы можете поддерживать несколько сборок дистрибутива на одном экземпляре Koji, просто добавив больше тегов, чем описано здесь.
Теги также поддерживают иерархичность и наследование.

Нам также нужен тег, который используется для сборки и наследует цель сборки. Мы называем этот тег dist-centos7-build.
Кодзи собирает пакеты RPM в chroot с помощью mock tool. Он также устанавливает базовые пакеты в эти сборки из виртуальных групп пакетов yum с именами build и srpm-build. Поэтому нам нужно сообщить Кодзи, какие пакеты нам нужны. Вы можете расширить этот список в соответствии с вашими потребностями, но выбирайте мудро: эти пакеты загружаются для каждой сборки.
Кроме того, Кодзи нужно знать, где искать/извлекать пакеты, поэтому мы добавляем внешние репозитории, базовый репозиторий как самый первый!!

При этом придерживайтесь шаблона имени тега dist-SOME_NAME, dist-SOME_NAME-build.

Инструкция

  1. переключаемся на пользователя kojiadmin
su kojiadmin
  1. создаем целевой тег

koji add-tag dist-foo

  1. создаем тег для сборки
koji add-tag --parent dist-foo --arches "i386 x86_64 ppc ppc64" dist-foo-build
  1. добавляем внешние репозитории (Это репозитории из которых koji будет брать пакеты необходимые для сборки)
koji add-external-repo -t dist-foo-build dist-foo-external-repo http://repo-server.example.com/path/to/repo/for/foo/\$arch/
  1. задаем цель сборки из созданного ранее тега
koji add-target dist-foo dist-foo-build
  1. добавляем группы для пакетов
koji add-group dist-foo-build build
koji add-group dist-foo-build srpm-build
  1. добавляем необходимые пакеты для сборки rpm в группы build и srpm-build
koji add-group-pkg dist-foo-build build <pkg1> <pkg2> .....
koji add-group-pkg dist-foo-build srpm-build <pkg1> <pkg2> .....
  1. Добавим пакеты, которые собираемся создавать, в свой тег.
koji add-pkg --owner <kojiuser> dist-foo <pkg1> <pkg2> .....
  1. обновляем репозиторий
koji regen-repo dist-foo-build
  1. собираем пакет
koji build dist-foo /path/to/*.src.rpm

koji создаст задачу сборки, которую можно посмотреть в
https://kojidev.platform-os.org/koji/tasks включив показ всех задач.
Перейдя в завершившуюся задачу можно найти логи и собранные файлы.
Основные ошибки сборки можно смотреть в файлах mock_output.log и root.log

Пример команд для сборки пакета binutils из локально src.rpm

koji add-tag dist-centos7
koji add-tag --parent dist-centos7 --arches "x86_64" dist-centos7-build
koji add-external-repo -t dist-centos7-build centos7-repo http://centos.bio.lmu.de/7/os/\$arch/
koji add-external-repo -t dist-centos7-build centos7-repo-extras https://mirror.hostart.az/CentOS/7.9.2009/extras/\$arch/
koji add-external-repo -t dist-centos7-build centos7-repo-unsupported http://springdale.math.ias.edu/data/puias/unsupported/7/\$arch/
koji add-target dist-centos7 dist-centos7-build
koji add-group dist-centos7-build build
koji add-group dist-centos7-build srpm-build
koji add-group-pkg dist-centos7-build build \
    bash bzip2 coreutils cpio diffutils findutils gawk gcc \
    grep sed gcc-c++ gzip info patch redhat-rpm-config \
    rpm-build shadow-utils tar unzip util-linux-ng which make
koji add-group-pkg dist-centos7-build srpm-build \
    bash cvs gnupg make redhat-rpm-config rpm-build shadow-utils \
    wget rpmdevtools
koji add-pkg --owner kojiadmin dist-centos7 binutils
koji regen-repo dist-centos7-build
koji build dist-centos7 binutils-2.27-44.base.el7.src.rpm

Сборка из репозитория git

Пример команды сборки из репозитория git

koji build --scratch --no-rebuild-srpm dist-el9 'git+ssh://[email protected]/specs/bash.git#90731677c307d800f0a08bc5ba9555ffaa89084a'

При этом в /etc/kojid/kojid.conf должно быть прописано:

allowed_scms=git.org.ru:/specs/*:no

Сборка из src.rpm

koji build --skip-tag dist-el9 bash-1.2.3-1.el9.src.rpm

конфигурация mock

koji edit-tag dist-el9.1-build -x mock.package_manager=dnf
koji edit-tag dist-el9.1-build -x mock.new_chroot=true
koji edit-tag dist-el9.1-build -x mock.releasever=9
koji edit-tag dist-el9.1-build -x mock.package_manager=dnf
koji edit-tag dist-el9.1-build -x mock.new_chroot=True
koji edit-tag dist-el9.1-build -x mock.releasever=9
koji edit-tag dist-el9.1-build -x mock.new_chroot=False

Updated by Viacheslav Anzhiganov about 2 months ago · 1 revisions