Girar на коленке: различия между версиями
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 42: | Строка 42: | ||
-nographic -m 4G \ | -nographic -m 4G \ | ||
-smp cpus=6 \ | -smp cpus=6 \ | ||
-netdev user,id=eth0,hostfwd=tcp:: | -netdev user,id=eth0,hostfwd=tcp::2022-:22 \ | ||
-net nic,netdev=eth0 \ | -net nic,netdev=eth0 \ | ||
systemd-iv-20240221-x86_64.qcow2c | systemd-iv-20240221-x86_64.qcow2c | ||
Строка 48: | Строка 48: | ||
Полезен alias в .ssh/config: | Полезен alias в .ssh/config: | ||
Host | Host qg | ||
Hostname localhost | Hostname localhost | ||
Port 5022 | Port 5022 | ||
Строка 54: | Строка 54: | ||
== girar == | == girar == | ||
Беру свой форк https://git.altlinux.org/people/iv/packages/girar.git?a=shortlog;h=refs/heads/ | Беру свой форк https://git.altlinux.org/people/iv/packages/girar.git?a=shortlog;h=refs/heads/hacks , так как именно над ним планирую работать. | ||
git clone -o iv -b hacks https://git.altlinux.org/people/iv/packages/girar.git | |||
cd girar | |||
Собираю | Собираю | ||
Строка 68: | Строка 71: | ||
ln -s /var/lib/girar/repo / | ln -s /var/lib/girar/repo / | ||
== Настраиваем == | == Настраиваем == | ||
Строка 77: | Строка 79: | ||
vim /usr/libexec/girar-builder/gb-sh-conf-site | vim /usr/libexec/girar-builder/gb-sh-conf-site | ||
Выставим | |||
GB_USER_PREFIX=alt_ | |||
GB_LIST_OF_CHECKS_ALLOWED_TO_FAIL='' | |||
GB_APT_CACHE_LIMIT можно удалить, в GB_TRUST_GPG_NAMES допишем себя. Можно заодно в GB_REPO_RPMARGS весь payload заменить на 'w2T.xzdio', например. | |||
Поправим и /etc/girar/repo/.default: допишем себя. | Поправим и /etc/girar/repo/.default: допишем себя в TRUST_NAMES и SUPERUSERS. | ||
GIRAR_TRUST_GPG_NAMES="incominger secondary alt-sisyphus-ports alt-p9-ports alt-p9 alt-sisyphus updates iv" | GIRAR_TRUST_GPG_NAMES="incominger secondary alt-sisyphus-ports alt-p9-ports alt-p9 alt-sisyphus updates iv" | ||
Строка 125: | Строка 132: | ||
Настроим собирающую сторону: | |||
apt-get install hasher | apt-get install hasher | ||
Строка 170: | Строка 177: | ||
ssh build-awaiter0-test-x86_64 | ssh build-awaiter0-test-x86_64 | ||
Пришла пора создать репозиторий. | Пришла пора создать репозиторий. Для этого понадобятся какие-нибудь пакеты, причём желательно, чтобы они попали во все нужные Вам компоненты (добавлять компоненты в существующий репозиторий немного сложнее). Можно воспользоватся [https://git.altlinux.org/people/iv/packages/?p=fakepkg-for-every-component.git;a=shortlog;h=refs/heads/main моим костылём], а точнее результатом его сборки, в качестве начального наполнения репозитория: скопируйте в виртуалку все rpm и (ВАЖНО) src.rpm тоже не забудьте. | ||
Превратим кучку пакетов в заготовку репозитория при помощи честно украденного у Глеба скрипта: | |||
girar-create-girar-repo ./test-repo/ /repo/before/ | girar-create-girar-repo ./test-repo/ /repo/before/ | ||
Строка 196: | Строка 205: | ||
И там команда | И там команда | ||
/usr/libexec/girar-builder/gb-toplevel-commit test | /usr/libexec/girar-builder/gb-toplevel-commit test | ||
== Создадим пользователя == | |||
Удобно хранить все ключи в одной папке: | |||
mkdir ssh_keys | |||
И закинем туда свой публичный ключ. | |||
У нас нет gitery, поэтому нужен костыль | |||
mkdir -p /people/iv | |||
Можно создавать пользователя: | |||
/usr/libexec/girar-admin/girar-admin user-add iv 'Ivan A. Melnikov' < ssh_keys/iv | |||
setquota на нас поругается, но это не важно. | |||
Добавим пользователя в группу мейнтейнеров, чтобы он мог коммитить задачи: | |||
/usr/libexec/girar-admin/girar-admin maintainer-add iv | |||
Те же три команды можно повторить и для других пользователей, если они нужны. | |||
== Дополнительные правки == | == Дополнительные правки == |
Текущая версия от 18:04, 18 марта 2024
XXX: HERE BE DRAGONZ
На этой странице приведены мои заметки, неполные и кривые. Нормальную документацию по разворачиванию girar предлагается написать его разработчикам.
Задача: сделать собственное окружение girar для разрабоки и тестирования.
Идея: взять виртуалку, развернуть на ней gyle, сделать её же сборочной машиной; можно будет подключить внешний репозиторий и собирать SRPMки.
Плюсы:
- тривиальная инфраструктура
- готовым образом можно легко поделиться
Минусы:
- неполный репозиторий локально -- не все проверки работают;
- нельзя собирать из git (нужен gitery, а на одном хосте с girar'ом его похоже не развернёшь)
ОСь
Сизиф, systemd. Можно брать sysv, но мне не интересно. Можно, наверное, брать облачный образ, но они не слишком свежи, поэтому соберём свой при помощи m-p:
ifeq (vm,$(IMAGE_CLASS)) vm/systemd-iv: vm/systemd-net use/net/networkd/resolved use/tty/S0 use/deflogin @$(call add,BASE_PACKAGES,update-kernel) @$(call add,BASE_PACKAGES,apt-scripts) @$(call add,BASE_PACKAGES,vim-console less ripgrep) @$(call add,BASE_PACKAGES,resize) @$(call add,BASE_PACKAGES,systemd-settings-disable-kill-user-processes) @$(call set,ROOTPW,root) @$(call set,VM_SIZE,21474836480) endif
Важно наличие systemd-settings-disable-kill-user-processes.
make APTCONF=/path/to/sisyphus-x86_64.conf BRANCH=sisyphus DEBUG=1 REPORT=1 STDOUT=1 KFLAVOURS=un-def vm/systemd-iv.qcow2c
Копирую себе полученный образ и запускаю виртуалку
qemu-system-x86_64 -enable-kvm \ -nographic -m 4G \ -smp cpus=6 \ -netdev user,id=eth0,hostfwd=tcp::2022-:22 \ -net nic,netdev=eth0 \ systemd-iv-20240221-x86_64.qcow2c
Полезен alias в .ssh/config:
Host qg Hostname localhost Port 5022
girar
Беру свой форк https://git.altlinux.org/people/iv/packages/girar.git?a=shortlog;h=refs/heads/hacks , так как именно над ним планирую работать.
git clone -o iv -b hacks https://git.altlinux.org/people/iv/packages/girar.git cd girar
Собираю
gear-hsh --no-sisyphus-check
Закидываю girar-0.7-alt1.1.x86_64.rpm на VM и ставлю:
apt-get update apt-get install girar-0.7-alt1.1.x86_64.rpm
Немного странного:
ln -s /var/lib/girar/repo /
Настраиваем
Копируем шаблон конфигурации и правим:
cp /usr/share/doc/girar-0.7/conf/gb-sh-conf-site /usr/libexec/girar-builder/ vim /usr/libexec/girar-builder/gb-sh-conf-site
Выставим
GB_USER_PREFIX=alt_ GB_LIST_OF_CHECKS_ALLOWED_TO_FAIL=
GB_APT_CACHE_LIMIT можно удалить, в GB_TRUST_GPG_NAMES допишем себя. Можно заодно в GB_REPO_RPMARGS весь payload заменить на 'w2T.xzdio', например.
Поправим и /etc/girar/repo/.default: допишем себя в TRUST_NAMES и SUPERUSERS.
GIRAR_TRUST_GPG_NAMES="incominger secondary alt-sisyphus-ports alt-p9-ports alt-p9 alt-sisyphus updates iv" GIRAR_REPO_SUPERUSERS='iv' GIRAR_ALLOW_SAME_NEVR=1 GIRAR_DEFAULT_REPO=test GIRAR_DISABLE_ACL_NOTIFICATIONS=1
Включим и запустим proxy daemons:
systemctl start girar-proxyd-acl systemctl start girar-proxyd-depo systemctl start girar-proxyd-depot
systemctl enable girar-proxyd-acl systemctl enable girar-proxyd-depot systemctl enable girar-proxyd-repo
Будем создавать репозиторий по имени test.
Сгенерируем awaiter'у ключ, которым он будет подписывать собранные пакеты -- без пароля, RSA 4096:
su - awaiter gpg --gen-key
Fingerprint полученного ключа нужно прописать в настройки girar-builder для репозитория. Создадим их:
# cat /usr/libexec/girar-builder/gb-sh-conf-test GB_REPO_NAME=test GB_REPO_REAL_NAME=sisyphus GB_REPO_CODENAME="$(date +%s)" GB_REPO_LABEL=Sisyphus GB_ARCH="x86_64" GB_REPO_UP_NAME= GB_REPO_DOWN_NAME= GB_REPO_REL_SUFF_MUST_NOT='*.M[4-9][0-9]*' GB_REPO_REL_SUFF_MUST_HAVE= GB_REPO_SIGNER="373EC112D73F5992955392817BFFEECFF2732FBE" GB_ALLOW_SAME_NEVR=1 GB_SKIP_DEBUGINFO_INSTALL_CHECKS=yes
Настроим собирающую сторону:
apt-get install hasher useradd builder0 hasher-useradd builder0
В /etc/hasher-priv/system:
prefix=~:/tmp allow_ttydev=yes allowed_mountpoints=/proc,/dev/pts,/dev/shm,/sys,/sys/fs/cgroup allowed_devices=/dev/kvm rlimit_hard_nproc=32768 rlimit_soft_nproc=16384 rlimit_hard_memlock=33554432 rlimit_soft_memlock=33554432 wlimit_time_elapsed=360000 wlimit_time_idle=360000
Перезапустите и включите hasher-privd.
Awaiter'у нужно сгенерировать ключ:
su - awaiter ssh-keygen -t ed25519
Нужен alias специального вида в .ssh/config:
Host build-awaiter0-test-x86_64 HostName localhost User builder0
Этот ключ нужно положить builder'у, например, от рута:
# cp /var/lib/girar/awaiter/.ssh/id_ed25519.pub /etc/openssh/authorized_keys/builder0
Проверим, и заодно примем host key:
su - awaiter ssh build-awaiter0-test-x86_64
Пришла пора создать репозиторий. Для этого понадобятся какие-нибудь пакеты, причём желательно, чтобы они попали во все нужные Вам компоненты (добавлять компоненты в существующий репозиторий немного сложнее). Можно воспользоватся моим костылём, а точнее результатом его сборки, в качестве начального наполнения репозитория: скопируйте в виртуалку все rpm и (ВАЖНО) src.rpm тоже не забудьте.
Превратим кучку пакетов в заготовку репозитория при помощи честно украденного у Глеба скрипта:
girar-create-girar-repo ./test-repo/ /repo/before/
Создадим репозиторий по имени test, для которого у нас уже есть конфиг и сборочный узел:
girar-clone-repo test /repo/before/
Заготовку можно удалить
rm -rf /repo/before/
awaiter и pender запускаются кроном
crontab -e -u awaiter
Запускаем команду:
USER=awaiter0 /usr/libexec/girar-builder/gb-toplevel-build test
crontab -e -u pender
И там команда
/usr/libexec/girar-builder/gb-toplevel-commit test
Создадим пользователя
Удобно хранить все ключи в одной папке:
mkdir ssh_keys
И закинем туда свой публичный ключ.
У нас нет gitery, поэтому нужен костыль
mkdir -p /people/iv
Можно создавать пользователя:
/usr/libexec/girar-admin/girar-admin user-add iv 'Ivan A. Melnikov' < ssh_keys/iv
setquota на нас поругается, но это не важно.
Добавим пользователя в группу мейнтейнеров, чтобы он мог коммитить задачи:
/usr/libexec/girar-admin/girar-admin maintainer-add iv
Те же три команды можно повторить и для других пользователей, если они нужны.
Дополнительные правки
В /usr/libexec/girar-builder/remote/gb-remote-plant можно подкинуть ещё репоизториев, чтобы они использовались при сборке и install check'ах.
То же самое стоит сделать с /usr/libexec/girar-builder/gb-task-repo-unmets, или выключить проверку на unmets.
Проверку на bad elf symbols в неполном репозитории скорее всего тоже придётся отключить
И поехали
Создайте и удалите задачу 1 -- это нужно для внутренних структур данных.
Трижды перезагрузитесь на удачу.
Начиная с задачи 2 можно пробовать собирать SRPMки.