feat(ci): skip .deb rebuild when version already published

build-deb now checks the Debian registry first and skips the slow source
compile+upload when the pinned version already exists. Add a force_deb
workflow_dispatch input to rebuild anyway, and make upload.sh idempotent
(HTTP 409 -> already published, skip).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Georg K
2026-06-12 06:02:20 +03:00
parent e3592514f1
commit 0abfe348c1
3 changed files with 43 additions and 5 deletions

View File

@@ -40,6 +40,8 @@ prepare ──► build-deb ──► build-image ──► package-helm
- `.deb` - источник истины: `build-image` и `package-hosted` имеют `needs: build-deb`
И дополнительно проверяют, что версия `3.2.8+git` уже опубликована в Debian-реестре
(GET `dists/noble/main/binary-amd64/Packages`), иначе fail.
- `build-deb` пропускает долгую пересборку, если версия уже в реестре. Принудительно -
input `force_deb=true`. Заливка идемпотентна: `upload.sh` пропускает HTTP 409 (уже есть).
- Авторизация: репо-секреты `PACKAGES_USER` / `PACKAGES_TOKEN` (Gitea token, scope
`write:package`).
- Раннер: `ubuntu-latest` с доступным Docker.
@@ -90,8 +92,9 @@ prepare ──► build-deb ──► build-image ──► package-helm
- Образ при сборке тянет .deb из Debian-реестра Gitea - предполагается публичный read для
owner `pub`. Если реестр приватный, сборку образа надо чинить (read-токен/buildkit secret),
а на нодах нужен `DEB_AUTH` для apt.
- Реестр может отклонить повторную заливку той же версии .deb (релиз - переиздание версии
требует bump `VERSION`).
- Повторная заливка той же версии .deb обрабатывается: `build-deb` её пропускает, а
`upload.sh` не падает на HTTP 409. Переиздать изменённое содержимое той же версии нельзя -
нужно либо bump `VERSION`, либо удалить пакет в Gitea. `force_deb` только пересобирает.
- Пароль БД: в hosted - в `.env_cnf` (gitignored, `*.env_cnf`); в k8s - в Secret. В git не
попадает.