Перейти к содержанию
zoryn/ maintainer-assistant

zoryn builder

Управление сборочными машинами (локальными и удалёнными hasher).

Использование

zoryn builder <подкоманда>

Подкоманды

  • list [--simple] — список доступных билдеров (--simple — только имена).
  • status — проверка доступности (свободен/занят).
  • config [NAME] — полная конфигурация билдера включая значения по умолчанию.
  • shell [--builder=NAME] — открыть shell в hasher.
  • install [--builder=NAME] PKG... — установить пакеты в hasher.
  • run [BUILDER] [--rooter] [--execute=PATH] -- CMD [ARGS] — запустить команду в chroot hasher.
  • add [опции] — добавить новый билдер (интерактивно или нет).
  • remove NAME [-y] — удалить конфигурацию билдера (встроенный local удалить нельзя).
  • copy SRC... DST — копировать файлы в/из chroot hasher (builder:path для путей внутри chroot).
  • clean [--all|--all-local|--all-remote] [NAME...] — очистить chroot hasher и вспомогательные каталоги.

zoryn builder add

Опции:

  • --name=NAME — имя билдера (обязательно для неинтерактивного режима).
  • --type=TYPE — тип: local или remote (по умолчанию: remote).
  • --host=HOST — удалённый хост (SSH alias). Обязателен для remote.
  • --arch=ARCH — целевая архитектура. Определяется автоматически с хоста.
  • --hasher-dir=DIR — каталог hasher. Без --multi-add: путь как есть (по умолчанию: ~/hasher). С --multi-add: шаблон с {hasher_number} (по умолчанию: ~/hasher_{hasher_number}).
  • --remote-dir=DIR — каталог сборки на удалённом хосте (по умолчанию: ~/build).
  • --description=TEXT — описание билдера.
  • -n, --number=N — номер hasher для параллельных сборок (1–128).
  • --based=NAME — копировать настройки из существующего билдера.
  • --repo=PATH — путь к репозиторию или URL для локального управления конфигом apt. Можно повторять для --multi-add (ветка определяется автоматически из release-файла каждого репозитория). Генерирует apt.conf, sources.list, preferences локально и синхронизирует с билдером перед каждой сборкой. Локальные пути автоматически префиксуются file:///.
  • --multi-add=N — создать N билдеров на ветку с последовательной нумерацией hasher. Требует хотя бы один --repo.
  • --start-number=M — начать нумерацию hasher с M (по умолчанию: 1). Используется с --multi-add.
  • --dry-run — предпросмотр без создания. С --multi-add.
  • --force — перезаписать существующие конфигурации. С --multi-add.
  • --apt-conf=PATH — альтернативный apt.conf (вместо /etc/apt/apt.conf). Поддерживает host:path для чтения с удалённых хостов.
  • --sources-list=PATH — альтернативный sources.list (переопределяет путь из apt.conf). Поддерживает host:path.
  • --no-create-hasher-users — не создавать satellite-пользователей hasher (по умолчанию создаются через sudo hasher-useradd).
  • -y, --yes — автоподтверждение.

Локальная конфигурация apt с --repo

Вместо настройки apt на хосте билдера укажите репозиторий через --repo:

zoryn builder add arm-server --host arm.local --repo /home/repo/p11

Это генерирует apt.conf, sources.list, preferences локально в ~/.config/zoryn/builders.d/{name}/apt/ и синхронизирует с билдером перед каждой сборкой. Ветка определяется автоматически из release-файла.

В интерактивном режиме репозиторий запрашивается с TAB-дополнением для локальных и удалённых путей. По умолчанию — значение из /etc/apt/sources.list на хосте билдера.

Флаг --repo принимает:

  • Локальные пути: /path/to/repo (автоматически с префиксом file:///).
  • HTTP/HTTPS URL: http://example.com/repo.

Ручные переопределения (--apt-conf, --sources-list) имеют более высокий приоритет.

Массовое создание билдеров

# 5 билдеров для двух веток (10 всего, ветки из репозиториев)
zoryn builder add --name node1 --host user@server --multi-add 5 \
  --repo /srv/repo/p11 --repo /srv/repo/sisyphus -y

# Предпросмотр без создания
zoryn builder add --name node1 --host user@server --multi-add 3 \
  --repo /srv/repo/p11 --dry-run

# Нумерация с 10
zoryn builder add --name node1 --host user@server --multi-add 5 \
  --repo /srv/repo/p11 --start-number 10 -y

Создание hasher-пользователей

По умолчанию builder add автоматически создаёт satellite-пользователей hasher через sudo hasher-useradd, если их нет. Требуется passwordless sudo на хосте билдера. Пропустить — --no-create-hasher-users.

Примеры

zoryn builder list                  # список всех билдеров
zoryn builder list --simple         # только имена (для скриптов)
zoryn builder list -a x86_64        # фильтр по архитектуре
zoryn builder list --host local     # только локальные
zoryn builder list -a i586 -B p10   # комбинация фильтров
zoryn builder status                # статус всех
zoryn builder status -b shell64     # статус конкретного
zoryn builder config                # конфиг локального по умолчанию
zoryn builder config arm-server     # конфиг конкретного
zoryn builder shell                 # shell в hasher по умолчанию
zoryn builder shell -b arm-server   # shell на удалённом
zoryn builder run -- rpm -qa                    # команда в hasher
zoryn builder run my-builder -- ls -la          # на конкретном
zoryn builder run --rooter -- cat /etc/shadow   # от pseudoroot
zoryn builder run --execute=./setup.sh          # скрипт в hasher
zoryn builder install vim nano      # установить пакеты
zoryn builder copy ./file.c mybuilder:src/      # файл в chroot
zoryn builder copy mybuilder:build.log ./       # файл из chroot
zoryn builder add                   # интерактивно
zoryn builder add --based shell64   # на основе существующего
zoryn builder add --name arm --host myserver -y
zoryn builder add --name local-i586 --type local --arch i586 -y
zoryn builder add --name arm --host user@myserver --number 3 -y
zoryn builder add --name arm --host user@myserver --number 3 --no-create-hasher-users -y
zoryn builder add --name p11 --host myserver --repo /home/repo/p11 -y
zoryn builder add --name nfs --type local --apt-conf /etc/apt-nfs/apt.conf -y
zoryn builder add --name p11 --host mybuilder --apt-conf mybuilder:apt/p11/apt.conf -y
zoryn builder remove mybuilder      # удалить (с подтверждением)
zoryn builder remove mybuilder -y   # удалить без подтверждения
zoryn builder clean local           # очистить конкретного
zoryn builder clean --all-local     # все локальные
zoryn builder clean --all           # всех
zoryn builder clean --all --dry-run # предпросмотр