- Shell 74.2%
- Python 25.8%
- сборка на раннере 57m43s, весь прогон 59 мин, пакет 0.59.0-1 в индексе; - бинарник 161 216 672 байт против 122 971 760 у эталона 0.57.0 (+31 %): цена thin LTO + codegen-units=16, разделить с разницей версий нечем; - состав сошёлся с эталоном по членам (31/31), отличия — только -loc; - клиентская проверка: негативные контроли подписи и конфликта, установка из живого репо, хуки sysusers/tmpfiles, реальный systemd (enable/active/restart), backup -> .pacsave; - packaging-notes: tmpfiles.d, меняющий владельца каталога, даёт в pacman -Qkk UID/GID mismatch — так же у эталона, сверять с ним до вывода «дефект». |
||
|---|---|---|
| .forgejo/workflows | ||
| ci | ||
| docs | ||
Документация по сборке pacman-пакетов (pacman-pkg-build)
Репозиторий собирает pacman-пакеты из зазеркаленных исходников и публикует
их в личный pacman-репозиторий Хражевника (pacman-alexrus1234): артефакт —
.pkg.tar.zst вместе с индексом репо. В соседних репозиториях артефакты другие:
bin-build кладёт статические бинарники в generic-реестр Forgejo,
container-build — OCI-образы в Nora.
Принцип репозитория: один пайплайн — один артефакт. Каждый пакет собирается
своим workflow со своим тегом зеркала и своим pkgrel.
Как запускать
Запуски — только вручную (workflow_dispatch) из UI Forgejo, по пушу ничего не
стартует. Пакеты связаны зависимостями, поэтому порядок важен:
raft-loc → cowsql-loc → lxc-loc → incus-loc (+ incus-tools-loc)
Список пайплайнов, их артефакты и входы (target_tag, pkgrel, force_build) —
pipelines.md; общая схема всех workflow (контейнер сборки,
приёмка, публикация) — pipelines-common.md.
Настройка инфраструктуры (разово, до первого запуска)
- Личный репо в Хражевнике — админка
http://172.20.6.9:10003/ui: namepacman-alexrus1234, ecosystempacman. Запомнитьidрепо. - Scoped-токен
repo:<id>:write. - Секреты репозитория Forgejo
Build/pacman-pkg-build(Settings → Actions → Secrets):KHRZ_REPO_ID— id репо,KHRZ_TOKEN— токен.
Подробности (админка, POST /api/v1/users/{id}/api-tokens) —
setup-infra.md.
Настройка машины-клиента (Arch)
Ключ репозитория (подпись индекса), разово:
sudo curl -fsSL https://khrazhevnik.panelka.yadr01.internal/repo/pacman-alexrus1234/key.asc -o /tmp/khrazhevnik.asc
sudo pacman-key --add /tmp/khrazhevnik.asc
sudo pacman-key --lsign-key "$(gpg --show-keys --with-colons /tmp/khrazhevnik.asc | awk -F: '/^fpr:/{print $10; exit}')"
Вписать в /etc/pacman.conf:
[pacman-alexrus1234]
SigLevel = Optional DatabaseRequired
Server = https://khrazhevnik.panelka.yadr01.internal/repo/pacman-alexrus1234
Установка и первый запуск (пример — incus):
sudo pacman -S incus-loc incus-tools-loc # зависимости -loc тянет pacman
sudo systemctl enable --now incus-loc.socket incus-user-loc.socket
sudo usermod -aG incus-loc-admin "$USER" # доступ к сокету демона
incus-loc admin init # первичная настройка
Правила установки (только из репо, без --force, один пакет на upstream-имя) и
обоснование SigLevel = Optional DatabaseRequired — install.md;
что вписывать и включать для конкретного пакета — install-<пакет>.md (для incus
— install-incus-loc.md). Имена команд, юнитов и путей — по
naming.md.
Документация
- pipelines.md — каталог пайплайнов: таблица, порядок запуска, как добавить новый пакет;
- pipelines-common.md — общая схема всех workflow этого репозитория;
- naming.md — соглашение об именах
-loc; - packaging-notes.md — грабли упаковки и правила приёмки;
- setup-infra.md — разовая настройка репо, токена, секретов;
- install.md — установка из репо: правила, обоснование
SigLevel, чеклист дляinstall-<пакет>.md; - install-incus-loc.md — установка и первый запуск
incus-loc; build-<пакет>.md— по одному документу на пайплайн: шаги, входы, проверки, расхождения с официальным пакетом.