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

zoryn task

Управление задачами. Команды task show и task ls по умолчанию используют Tasks API для быстрого ответа, с fallback на SSH, если API недоступен. Текущий пользователь определяется из [tasks] user в ~/.zoryn или из email %packager в ~/.rpmmacros (rider@altlinux.orgrider).

zoryn task new

Создать новое задание в двоичном репозитории. Обёртка над ssh gyle task new.

zoryn task new <REPO>

Выводит ID нового задания при успехе.

zoryn task new sisyphus
zoryn task new p11

zoryn task show

Показать детали задачи сборки.

zoryn task show [--brief] [--json] [TASK_ID] [-d]

Режимы вывода:

  • по умолчанию — gyle-подобный key=value формат с раскрашенными state, repo, owner.
  • --brief — компактный вывод сабтасков (package.git=tag).
  • --json — раскрашенный JSON (jq-стиль).

Без TASK_ID показывает последнюю задачу.

zoryn task show 409684              # детали задачи
zoryn task show --brief 409684      # кратко
zoryn task show --json 409684       # JSON
zoryn task show                     # последняя задача

zoryn task ls

Список задач сборки с цветным state.

zoryn task ls [-B repo] [--state STATE] [-p pkg] [--user NAME] [-a|--all]
              [--test-only] [--needs-approval ROLE] [-d]

Показывает задачи пользователя из gyle. Фильтры по репозиторию, state, пакету, пользователю, test-only.

  • -B <repo> / --repo <repo> — через запятую (sisyphus, p11,p10).
  • --state <STATE> — через запятую. Значения: NEW, AWAITING, BUILDING, COMMITTING, PENDING, TESTED, EPERM, FAILING, FAILED, POSTPONED, SWEPT, DONE.
  • -p <pkg> — фильтр по имени пакета.
  • --user <NAME> — задачи пользователя (по умолчанию: текущий; ALL — все пользователи).
  • -a / --all — alias для --user ALL.
  • --test-only — только тестовые задачи.
  • --needs-approval <ROLE> — задачи, требующие approve от maint или tester.
zoryn task ls                          # все задачи
zoryn task ls -B p11                   # только p11
zoryn task ls -B sisyphus,p11          # p11 и sisyphus
zoryn task ls --state FAILED           # упавшие
zoryn task ls --state FAILED,EPERM     # FAILED и EPERM
zoryn task ls -p php                   # задачи с пакетом php
zoryn task ls --user zerg              # задачи пользователя zerg
zoryn task ls --all                    # всех пользователей
zoryn task ls --test-only              # только test-only
zoryn task ls --needs-approval maint   # нужен approve maintainer'а
zoryn task ls --needs-approval tester  # нужен approve тестировщика

zoryn task download

Скачать собранные RPM из задачи в локальный репозиторий hasher.

zoryn task download <package|task_id> [-b repo] [--arch arch] [-o dir] [-d]

Скачивает все собранные бинарные RPM. Аргумент — имя пакета или ID задачи. Если аргумент — число, используется как task ID; иначе ищет задачу с указанным пакетом.

По умолчанию путь назначения определяется из hsh --printenv. -o задаёт свой каталог (будет создан).

  • -b <repo> — целевой репозиторий (по умолчанию: sisyphus, игнорируется при указании task ID).
  • --arch <arch> — архитектура (по умолчанию: из hsh --printenv, или x86_64 с -o).
  • -o, --output <dir> — выходной каталог (по умолчанию: репозиторий hasher).
zoryn task download 404784              # по task ID
zoryn task download ffmpeg              # из задачи sisyphus
zoryn task download 404784 -o /tmp/rpms # в свой каталог
zoryn task download libva -b p11        # из задачи p11
zoryn task download ffmpeg --arch i586  # i586 RPM

zoryn task add

Добавить сабтаск в задачу. Совместимо с ssh gyle task add.

zoryn task add [--before SUBTASK_ID] <task_id> <action> ...

Действия:

  • repo <repo> <tag> — добавить gear-сабтаск.
  • <repo>.git=<tag> — короткий вариант repo (для copy-paste из task ls).
  • del <pkg>... — пометить пакеты на удаление.
  • rebuild <pkg>... — пересобрать пакеты из репозитория.
  • copy <pkg> [<from_repo>] — скопировать предсобранные бинарники.
zoryn task add 123456 repo php-sphinx.git 8.2.30-alt1
zoryn task add 123456 php-sphinx.git=8.2.30-alt1
zoryn task add 123456 del php-sphinx php-foo
zoryn task add 123456 rebuild php-sphinx
zoryn task add 123456 copy php-sphinx p10
zoryn task add --before 100 123456 repo dune.git 3.17.2-alt1

zoryn task run

Поставить задачу в очередь на сборку. Обёртка над ssh gyle task run.

zoryn task run [--test-only] [--commit] [--dry-run] [--fail-early] [--fail-late]
               [--hurry] [--unhurry] [-m MESSAGE] [TASK_ID] [-d]

Без ID использует последнюю задачу текущего пользователя.

  • --test-only — остановиться после теста, не коммитить.
  • --commit — коммит после тестов.
  • --dry-run — остановиться перед постановкой в очередь.
  • --fail-early — остановить сборку после первой ошибки.
  • --fail-late — не останавливать после первой ошибки.
  • --hurry / --unhurry — включить/выключить swift-режим.
  • -m MESSAGE — причина сборки (многословные в кавычках).
  • -m - — читать причину из stdin.
zoryn task run                                                # последняя задача
zoryn task run 123456                                         # конкретная
zoryn task run --test-only -m "fix build for aarch64" 123456
zoryn task run --fail-early --hurry 123456
zoryn task run --dry-run 123456
echo "long reason" | zoryn task run -m - 123456               # причина из stdin

zoryn task abort

Отменить запущенную задачу. Обёртка над ssh gyle task abort.

zoryn task abort TASK_ID [-d]

Task ID поддерживает TAB-дополнение из списка задач текущего пользователя.

zoryn task approve

Approve сабтаска. Обёртка над ssh gyle task approve.

zoryn task approve TASK_ID SUBTASK [--revoke] [-m MESSAGE] [-d]

SUBTASK — номер сабтаска, имя пакета или all для approve всех. Для all выполняется один вызов ssh gyle task approve <id> all — gyle сам проходит только по реально существующим сабтаскам, поэтому ранее удалённые через task delsub подзадачи не приводят к паразитным ошибкам «subtask not found». Комментарий — через -m. Если -m не указан и stdin подан на вход, сообщение читается оттуда.

zoryn task approve 123456 1                         # approve сабтаска #1
zoryn task approve 123456 php-sphinx -m "LGTM"      # по имени пакета
zoryn task approve 123456 all                       # все сабтаски
zoryn task approve 123456 1 --revoke                # отозвать approve
echo "Checked" | zoryn task approve 123456 1        # сообщение из stdin

zoryn task disapprove

Disapprove сабтаска. Обёртка над ssh gyle task disapprove. Синтаксис такой же, как у approve, включая поведение all: выполняется один вызов ssh gyle task disapprove <id> all, и gyle сам проходит по существующим сабтаскам.

zoryn task disapprove TASK_ID SUBTASK [--revoke] [-m MESSAGE] [-d]
zoryn task disapprove 123456 1 -m "Needs fixes"
zoryn task disapprove 123456 all -m "FTBFS"
zoryn task disapprove 123456 1 --revoke

zoryn task delete

Удалить сабтаск из задачи по имени пакета или номеру. Также доступна как zoryn task delsub (gyle-совместимый alias).

zoryn task delete <task_id> <package|subtask> [-d]
zoryn task delsub <task_id> <package|subtask> [-d]

Второй аргумент:

  • 4200 — номер сабтаска.
  • php-sphinx — имя пакета.
  • php-sphinx.git — имя пакета с .git.
  • php-sphinx.git=8.2.30-alt1 — имя с тэгом (для copy-paste из task ls).

zoryn task rm

Удалить задачу.

zoryn task rm <TASK_ID>

zoryn task genbatch

Сгенерировать batch-конфиг из существующей задачи.

zoryn task genbatch <task_id> [--output file] [--main pkg]

Читает структуру задачи и генерирует batch-конфиг для пересборки. См. Batch configs.

zoryn task refresh

Обновляет устаревшие сабтаски в задаче — подтягивает в задачу актуальные версии из репозитория вместо устаревших. По умолчанию сверяет rebuild-сабтаски с веткой задачи; --from <ветка> --types <список> распространяет обновление на другие типы сабтасков.

zoryn task refresh <task_id> [--from <branch>] [--types <list>] [--dry-run]

Опции:

  • <task_id> — задача для обновления.
  • --from <branch> — ветка репозитория для сверки (по умолчанию — ветка задачи).
  • --types <list> — типы сабтасков для обновления (через запятую). Значения: rebuild (по умолчанию), copy, gear, srpm; плюс сокращения ALL (всё кроме del) и build (= gear,srpm). Обязательно при использовании --from.
  • --dry-run — показать, что будет обновлено, не меняя задачу.
zoryn task refresh 123456                                  # rebuild-сабтаски на той же ветке
zoryn task refresh 123456 --from sisyphus --types ALL      # все типы из sisyphus
zoryn task refresh 123456 --from sisyphus --types copy     # только copy-сабтаски
zoryn task refresh 123456 --from sisyphus --types ALL --dry-run

zoryn task batch

Собрать цепочку связанных пакетов из batch-конфига.

zoryn task batch <config> [--basedir dir] [--no-build] [--create-task] [--refresh]
                 [--dry-run] [--test] [--skip pkgs] [-b builder] [-B repo]
                 [--continue|--abort|--restart] [-d]

Читает список пакетов из конфига и собирает каждый по порядку. Полезно для групп пакетов типа PHP-extensions, где все пакеты делят общие настройки.

Опции:

  • <config> — имя конфига (из ~/.config/zoryn/batch/) или путь к .conf.
  • --basedir <dir> — базовый каталог для пакетов (переопределяет конфиг, обязателен, если не указан).
  • --no-build — пропустить локальную сборку, только commit/tag/push/submit.
  • --create-task — создать новую задачу, если не найдена (добавляет main-пакет автоматически).
  • --refresh — обновить пакеты с локальными изменениями.
  • --dry-run — показать что будет сделано.
  • --test — локальная тестовая сборка без gitery/gyle.
  • --skip <pkgs> — пропустить пакеты (через запятую).
  • -b <name> — билдер для локальных сборок.
  • -B <repo> — целевой репозиторий (по умолчанию: sisyphus). Несколько репозиториев через запятую.
  • --continue — возобновить прерванный batch.
  • --abort — отбросить сохранённое состояние.
  • --restart — начать заново, отбросив старое состояние.
zoryn task batch php-8.4                       # ~/.config/zoryn/batch/php-8.4.conf
zoryn task batch ~/configs/mypackages.conf     # явный путь
zoryn task batch php-8.4 --basedir ~/packages  # переопределить basedir
zoryn task batch php-8.4 --no-build            # пропустить локальную сборку
zoryn task batch php-8.4 --create-task         # создать задачу, если нет
zoryn task batch php-8.4 --refresh             # обновить с локальными изменениями
zoryn task batch php-8.4 --dry-run             # предпросмотр
zoryn task batch php-8.4 --test                # локальная тестовая сборка
zoryn task batch php-8.4 --test -b arm-server  # тест на конкретном билдере
zoryn task batch php-8.4 --skip php-xdebug     # пропустить пакеты
zoryn task batch php-8.4 -B p11                # в p11
zoryn task batch php-8.4 -B sisyphus,p11,p10   # 3 ветки с зависимостями
zoryn task batch php-8.4 --continue            # возобновить прерванный
zoryn task batch php-8.4 --abort               # отбросить состояние
zoryn task batch php-8.4 --restart             # заново

zoryn task rebuild

Пересобрать пакеты, зависящие от пакета в существующей задаче.

zoryn task rebuild <task_id|package> [-b repo] [--from-log] [--deps-by-pkg <pkg>]
                   [--dptype=TYPE] [--depth=N] [--up <basedir>]
                   [--all-subtasks <basedir>] [--skip LIST] [--skip-gyle-done]
                   [-f|--force] [builder options] [-d]

Запрашивает RDB API о пакетах с двоичными зависимостями на указанный пакет, пересобирает их локально через hasher и добавляет успешные пересборки в задачу.

  • -b <repo> — целевой репозиторий (по умолчанию: sisyphus).
  • --from-log — парсить affected-пакеты из лога FAILED задачи вместо RDB API.
  • -f, --force — форсировать пересборку всех, игнорировать существующие лог-файлы ошибок.
  • --deps-by-pkg <pkg> — запросить зависимости по имени пакета вместо task ID.
  • --up <basedir> — обновлять пакеты с upstream вместо пересборки (см. ниже).
  • --dptype=TYPE — тип зависимостей для RDB: source (по умолчанию), binary, both.
  • --depth=N — глубина зависимостей (1–4, по умолчанию: 1).
  • --skip LIST — пропустить сабтаски по номеру или имени (через запятую, --skip 340,440,vtkaddon).
  • --skip-gyle-done — пропускать уже собранные на gyle (только с --all-subtasks).

Опции билдера — как у zoryn build: --builder=PATTERN, -a/--arch, -B/--build-branch (-b — для целевого репозитория), -p, -s, --fail-if-busy, --skip-busy.

--from-log ищет во всех доступных логах (итерации и попытки) последний с секцией «ACLs of affected packages». Для старых/удалённых задач показывает список affected-пакетов без попыток пересборки.

Режим update (--up)

Вместо пересборки обновляет каждый зависимый пакет с upstream:

  1. Клонирует пакет в <basedir>/<package>, если нет (через zoryn clone).
  2. Fetch и checkout ветки gears/sisyphus.
  3. Запускает zoryn up.
  4. Если уже актуальная версия: добавить как rebuild-сабтаск.
  5. Если обновлено: собрать локально и добавить как обычный сабтаск.
  6. При любой ошибке: немедленная остановка и возврат управления мейнтейнеру.
zoryn task rebuild 404809 --up ~/packages

zoryn task copy

Скопировать задачу в другой репозиторий.

zoryn task copy -B <repo> <task_id> [options]

Копирует все сабтаски существующей задачи в новую задачу в другом репозитории, используя имена пакетов (SRPM) из Tasks API. Если исходная задача ещё не завершена, новая зависит от неё.

Для rebuild-сабтасков сравнивает EVR (epoch:version-release) между источником и целью. При различии EVR запрашивает интерактивно: копировать или пересобирать. --copy-rebuilds / --rebuild-only пропускают запрос.

  • -B, --branch <repo> — целевой репозиторий (обязательно).
  • -r, --run — запустить после создания.
  • -c, --commit — автокоммит после успешной сборки (только с --run).
  • --copy-rebuilds — копировать из источника при различии EVR (не спрашивать); тот же EVR всё равно пересобирается.
  • --rebuild-only — всегда пересобирать из цели, даже если EVR различается.
  • -n, --dry-run — предпросмотр без создания задачи.
  • <task_id> — исходная задача.
zoryn task copy -B p11 404765                  # копировать в p11
zoryn task copy -B p11 --run 404765            # копировать и запустить test-only
zoryn task copy -B p11 --run --commit 404765   # копировать, запустить, auto-commit
zoryn task copy -B p11 --rebuild-only 404765   # всегда пересобирать
zoryn task copy -B p11 --copy-rebuilds 404765  # копировать при различии EVR
zoryn task copy -B p11 --dry-run 404765        # предпросмотр

zoryn task test-rebuild

Экспериментальная

Команда активно развивается и может измениться.

Тест-пересборка зависимых пакетов перед отправкой задачи.

zoryn task test-rebuild <task_id> [--arch <arch>] [--builder <pattern>]
    [--package PKG]... [--packages-file FILE]
    [--dptype=TYPE] [--depth=N] [--skip-ftbfs] [--verify-failures]
    [--continue] [--continue-no-refresh] [--top] [-d]

Скачивает RPM из задачи, через RDB находит зависимые пакеты и тест-пересобирает каждый локально. Помогает убедиться, что пакеты собираются с новыми зависимостями до commit.

  • <task_id> — ID задачи для тестирования.
  • --arch <arch> — архитектуры (через запятую, x86_64,aarch64).
  • --builder <pattern> — выбор билдеров (см. Паттерны билдеров).
  • --package PKG — добавить пакет в кастомный список (повторяемо). Пропускает авто-запрос RDB. Форматы: имя, name-version, name-version-release, с/без epoch и .rpm.
  • --packages-file FILE — читать список из файла (один пакет на строку, # — комментарий). Комбинируется с --package.
  • --dptype=TYPE — тип зависимостей: source (по умолчанию), binary, both.
  • --depth=N — глубина зависимостей (1–4, по умолчанию: 1).
  • --skip-ftbfs — пропустить пакеты, уже сломанные на beehive.
  • --verify-failures — после основной пересборки пересобрать упавшие без RPM из задачи, чтобы отличить регрессии от существующих ошибок.
  • --continue — продолжить с прошлого запуска, обновив список пакетов из RDB.
  • --continue-no-refresh — продолжить без обновления списка.
  • --top — интерактивный TUI с прогрессом.
  • -d, --debug — отладочный вывод.

При использовании --package / --packages-file zoryn получает текущую версию каждого пакета из RDB. Если указанная версия не совпадает, пакет пересобирается с текущей и показывается предупреждение. Отсутствующие в ветке пакеты пропускаются.

Возможности:

  • Мультиархитектурная поддержка с параллельным запуском на нескольких билдерах.
  • Автоматическое скачивание RPM из задачи по архитектуре.
  • Обнаружение зависимых через RDB.
  • Кастомный список пакетов через --package / --packages-file.
  • Beehive FTBFS detection — показывает уже сломанные на beehive пакеты.
  • Инкрементальная пересборка через --continue / --continue-no-refresh.
  • Статистика в rebuild-stats.json.
  • Мониторинг нагрузки хоста для защиты от перегрузки.
  • TUI с --top.
  • Постоянная история поиска: Up/Down или Ctrl+R в строке поиска логов.
zoryn task test-rebuild 404809                              # базовый тест на локальном билдере
zoryn task test-rebuild 404809 -b @all --arch=x86_64        # на всех x86_64 билдерах
zoryn task test-rebuild 404809 --skip-ftbfs                 # пропустить сломанные на beehive
zoryn task test-rebuild 404809 --continue                   # продолжить прерванную
zoryn task test-rebuild 404809 -b @all --top                # интерактивный TUI
zoryn task test-rebuild 404809 --verify-failures            # проверка, что упавшие — регрессии
zoryn task test-rebuild 404809 --package foo --package bar-1.2.3-alt1
zoryn task test-rebuild 404809 --packages-file ~/rebuild-list.txt

zoryn task manage

Интерактивный полноэкранный TUI для просмотра и управления задачами.

zoryn task manage [TASK_ID] [--user NAME] [--state STATE] [--repo REPO]
                  [--needs-approval GROUP] [--no-color]

Опции:

  • TASK_ID — открыть задачу сразу (минуя список).
  • --user NAME — фильтр по пользователю (по умолчанию: текущий; ALL — все).
  • --state STATE — фильтр по state (TESTED, FAILED, BUILDING).
  • --repo REPO — фильтр по целевому репозиторию (sisyphus, p11).
  • --needs-approval GROUP — задачи, требующие approve (maint или tester).
  • --no-color — отключить цвет (также учитывает NO_COLOR).

Возможности:

  • Mutt-style навигация в одной панели: список задач → детали → зависимости.
  • Approve/disapprove сабтасков, run/abort/commit/test-only задач, переключение share, управление зависимостями.
  • Отключение inheritance-проверок git/lastchange.
  • Создание новых задач и добавление сабтасков прямо из TUI.
  • Поиск задач (/) и сабтасков (/ на детальном экране, n/N — след./пред.).
  • Постоянная история поиска: Up/Down или Ctrl+R в строке поиска.
  • Просмотрщик build-лога и event-лога с подсветкой и переносом по словам.
  • Авто-обновление каждые 15 секунд, ручное — R/F5.
  • Фильтры по state, repo, user, needs-approval — всё горячими клавишами.
  • Read-only режим, когда SSH недоступен.
  • Полная клавиатурная навигация и поддержка колеса мыши.
  • Выделение текста мышью на любом экране — drag для выделения диапазона, double-click для слова; triple-click на строке в списке задач, содержащей wrap-блок пакетов, выделяет все pkg=version этой задачи. Многострочные выделения склеиваются пробелами (без переносов) и копируются в буфер обмена при отпускании (OSC 52). Одиночный клик на #NNN всё ещё копирует только цифры.
zoryn task manage                                  # с фильтрами по умолчанию
zoryn task manage --user ALL                       # все пользователи
zoryn task manage --state TESTED --repo sisyphus   # фильтр state и repo
zoryn task manage --needs-approval maint           # требует approve maintainer'а
zoryn task manage 410005                           # открыть задачу #410005
zoryn task manage --no-color                       # без цвета

Нажмите F1 в TUI для полной справки по горячим клавишам.

zoryn task log

Просмотр build- или event-логов в TUI.

zoryn task log <task_id>                                    # event-лог
zoryn task log <task_id> <subtask>                          # выбор архитектуры
zoryn task log <task_id> <subtask> --arch x86_64            # build-лог
zoryn task log <task_id> <subtask> --arch x86_64 --srpm     # SRPM-лог

Сабтаск — номер или имя пакета (TAB дополняет из задачи):

zoryn task log 410005 3                                     # по номеру сабтаска
zoryn task log 410005 php-jpgraph                           # по имени пакета

Опции:

  • --arch <arch> — архитектура (требует сабтаск).
  • --srpm — смотреть srpm.log вместо основного лога (требует --arch).
  • --no-color — без цвета.