Project

General

Profile

Подготовка тегов » History » Version 1

Viacheslav Anzhiganov, 02/04/2025 06:23 PM

1 1 Viacheslav Anzhiganov
# Подготовка тегов
2
3
KOJI использует теги для идентификации и маркировки различных этапов рабочего процесса создания RPM.
4
Некоторые теги логически связаны вместе с одним и тем же потоком, например сборка для определенного целевого дистрибутива, например CentOS6.
5
Назовем этот целевой тег dist-centos7.
6
7
Но вы можете поддерживать несколько сборок дистрибутива на одном экземпляре Koji, просто добавив больше тегов, чем описано здесь.
8
Теги также поддерживают иерархичность и наследование.
9
10
Нам также нужен тег, который используется для сборки и наследует цель сборки. Мы называем этот тег dist-centos7-build.
11
Кодзи собирает пакеты RPM в chroot с помощью mock tool. Он также устанавливает базовые пакеты в эти сборки из виртуальных групп пакетов yum с именами build и srpm-build. Поэтому нам нужно сообщить Кодзи, какие пакеты нам нужны. Вы можете расширить этот список в соответствии с вашими потребностями, но выбирайте мудро: эти пакеты загружаются для каждой сборки.
12
Кроме того, Кодзи нужно знать, где искать/извлекать пакеты, поэтому мы добавляем внешние репозитории, базовый репозиторий как самый первый!!
13
14
При этом придерживайтесь шаблона имени тега dist-SOME_NAME, dist-SOME_NAME-build.
15
16
## Инструкция
17
18
1) переключаемся на пользователя kojiadmin
19
20
```
21
su kojiadmin
22
```
23
24
2) создаем целевой тег
25
 
26
koji add-tag dist-foo
27
28
3) создаем тег для сборки
29
30
```
31
koji add-tag --parent dist-foo --arches "i386 x86_64 ppc ppc64" dist-foo-build
32
```
33
34
4) добавляем внешние репозитории (Это репозитории из которых koji будет брать пакеты необходимые для сборки)
35
36
```
37
koji add-external-repo -t dist-foo-build dist-foo-external-repo http://repo-server.example.com/path/to/repo/for/foo/\$arch/
38
```
39
40
5) задаем цель сборки из созданного ранее тега
41
    
42
```
43
koji add-target dist-foo dist-foo-build
44
```
45
46
6) добавляем группы для пакетов
47
48
```
49
koji add-group dist-foo-build build
50
koji add-group dist-foo-build srpm-build
51
```
52
53
7) добавляем необходимые пакеты для сборки rpm в группы build и srpm-build
54
55
```
56
koji add-group-pkg dist-foo-build build <pkg1> <pkg2> .....
57
koji add-group-pkg dist-foo-build srpm-build <pkg1> <pkg2> .....
58
```
59
60
8) Добавим пакеты, которые собираемся создавать, в свой тег.
61
62
```
63
koji add-pkg --owner <kojiuser> dist-foo <pkg1> <pkg2> .....
64
```
65
66
9) обновляем репозиторий
67
68
```
69
koji regen-repo dist-foo-build
70
```
71
72
10) собираем пакет
73
74
```
75
koji build dist-foo /path/to/*.src.rpm
76
```
77
78
koji создаст задачу сборки, которую можно посмотреть в 
79
https://kojidev.platform-os.org/koji/tasks включив показ всех задач.
80
Перейдя в завершившуюся задачу можно найти логи и собранные файлы.
81
Основные ошибки сборки можно смотреть в файлах mock_output.log и root.log
82
83
## Пример команд для сборки пакета binutils из локально src.rpm
84
85
```
86
koji add-tag dist-centos7
87
```
88
89
```
90
koji add-tag --parent dist-centos7 --arches "x86_64" dist-centos7-build
91
```
92
93
```
94
koji add-external-repo -t dist-centos7-build centos7-repo http://centos.bio.lmu.de/7/os/\$arch/
95
```
96
97
```
98
koji add-external-repo -t dist-centos7-build centos7-repo-extras https://mirror.hostart.az/CentOS/7.9.2009/extras/\$arch/
99
```
100
101
```
102
koji add-external-repo -t dist-centos7-build centos7-repo-unsupported http://springdale.math.ias.edu/data/puias/unsupported/7/\$arch/
103
```
104
105
```
106
koji add-target dist-centos7 dist-centos7-build
107
```
108
109
```
110
koji add-group dist-centos7-build build
111
```
112
113
```
114
koji add-group dist-centos7-build srpm-build
115
```
116
117
```
118
koji add-group-pkg dist-centos7-build build \
119
    bash bzip2 coreutils cpio diffutils findutils gawk gcc \
120
    grep sed gcc-c++ gzip info patch redhat-rpm-config \
121
    rpm-build shadow-utils tar unzip util-linux-ng which make
122
```
123
124
```
125
koji add-group-pkg dist-centos7-build srpm-build \
126
    bash cvs gnupg make redhat-rpm-config rpm-build shadow-utils \
127
    wget rpmdevtools
128
```
129
130
```
131
koji add-pkg --owner kojiadmin dist-centos7 binutils
132
```
133
134
```
135
koji regen-repo dist-centos7-build
136
```
137
138
```
139
koji build dist-centos7 binutils-2.27-44.base.el7.src.rpm
140
```
141
142
## Сборка из репозитория git
143
144
Пример команды сборки из репозитория git
145
146
```
147
koji build --scratch --no-rebuild-srpm dist-el9 'git+ssh://[email protected]/specs/bash.git#90731677c307d800f0a08bc5ba9555ffaa89084a'
148
```
149
150
При этом в /etc/kojid/kojid.conf должно быть прописано:
151
152
```
153
allowed_scms=git.org.ru:/specs/*:no
154
```
155
156
## Сборка из src.rpm
157
158
159
```
160
koji build --skip-tag dist-el9 bash-1.2.3-1.el9.src.rpm
161
```
162
163
## конфигурация mock
164
165
```
166
koji edit-tag dist-el9.1-build -x mock.package_manager=dnf
167
koji edit-tag dist-el9.1-build -x mock.new_chroot=true
168
koji edit-tag dist-el9.1-build -x mock.releasever=9
169
```
170
171
```
172
koji edit-tag dist-el9.1-build -x mock.package_manager=dnf
173
koji edit-tag dist-el9.1-build -x mock.new_chroot=True
174
koji edit-tag dist-el9.1-build -x mock.releasever=9
175
koji edit-tag dist-el9.1-build -x mock.new_chroot=False
176
```