Исправлен push multi-arch релиза; обновлена документация с разделом «Что нового».

This commit is contained in:
Sergey Antropoff
2026-07-23 13:15:31 +03:00
parent 436e82f19e
commit b4f648bedc
3 changed files with 43 additions and 9 deletions
+17
View File
@@ -0,0 +1,17 @@
---
description: Стиль русских текстов коммитов — свершённый вид
alwaysApply: true
---
# Тексты коммитов (русский)
При подготовке или создании сообщения коммита формулируй его как **уже сделанное**, а не как задачу.
- Используй свершённый вид / краткое причастие: **Добавлен**, **Исправлен**, **Обновлён**, **Переведён**, **Улучшен**, **Удалён**, **Добавлена**, **Исправлена** и т.п.
- Не начинай с инфинитива: ~~Добавить~~, ~~Исправить~~, ~~Обновить~~, ~~Перевести~~.
Примеры:
- `Исправлен push multi-arch релиза; обновлена документация.`
- `Добавлено копирование текста и двухосевая прокрутка в превью unwrap.`
- `Переведён make release на multi-arch сборку через Buildx (amd64/arm64).`
+6 -7
View File
@@ -85,6 +85,7 @@ buildx-setup:
# Multi-arch release: linux/amd64 + linux/arm64 → Docker Hub manifest list.
# PUSH=1 (default): buildx --push. PUSH=0: build only (cache; cannot --load multi-arch).
# Only tag $(FULL_IMAGE) — a bare "$(IMAGE_NAME):tag" would push to docker.io/library/...
release: env buildx-setup
@echo "Building $(FULL_IMAGE) [$(RELEASE_PLATFORMS)]"
@if [ "$(PUSH)" = "1" ]; then \
@@ -93,20 +94,18 @@ release: env buildx-setup
--provenance=false \
--sbom=false \
-t $(FULL_IMAGE) \
-t $(IMAGE_NAME):$(IMAGE_TAG) \
--push \
.; \
echo "Pushed $(FULL_IMAGE) (multi-arch)"; \
docker buildx imagetools inspect $(FULL_IMAGE) | sed -n '1,40p'; \
. \
&& echo "Pushed $(FULL_IMAGE) (multi-arch)" \
&& docker buildx imagetools inspect $(FULL_IMAGE) | sed -n '1,40p'; \
else \
docker buildx build \
--platform $(RELEASE_PLATFORMS) \
--provenance=false \
--sbom=false \
-t $(FULL_IMAGE) \
-t $(IMAGE_NAME):$(IMAGE_TAG) \
.; \
echo "PUSH=0 — multi-arch built into buildx cache (not pushed, not loaded locally)"; \
. \
&& echo "PUSH=0 — multi-arch built into buildx cache (not pushed, not loaded locally)"; \
fi
@$(MAKE) helm-package IMAGE_TAG=$(IMAGE_TAG)
+20 -2
View File
@@ -14,10 +14,23 @@
- RU / EN, светлая и тёмная тема
- CAPTCHA: Cloudflare Turnstile и/или hCaptcha
- админка: **статистика**, настройки, audit (пагинация + очистка), danger purge
- Docker Compose и Helm; образ на Docker Hub: [`inecs/wrapped`](https://hub.docker.com/r/inecs/wrapped)
- Docker Compose и Helm; multi-arch образ (`amd64`/`arm64`) на Docker Hub: [`inecs/wrapped`](https://hub.docker.com/r/inecs/wrapped)
Ссылка для получателя: `/w/<id>#<key>` или токен `wrapped_v1.<id>.<key>`. Ключ шифрования в URL-фрагменте (`#...`) на сервер не уходит.
## Что нового
Кратко по недавним доработкам UI, админки и релиза:
| Область | Что появилось |
|---------|----------------|
| **Расшифровка** | Прокрутка превью текста по вертикали и горизонтали; кнопка **Копировать** рядом со скачиванием |
| **Пароль** | Argon2-проверка *до* выдачи ciphertext; лимит попыток; пустой пароль попытку не тратит; структурированные ошибки в UI |
| **Админка** | Стартовая **Статистика** (MinIO, wraps, audit); очистка audit с подтверждением; пагинация журнала |
| **Релиз** | `make release` собирает **multi-arch** манифест `linux/amd64` + `linux/arm64` через Buildx и пушит только `inecs/wrapped:<tag>` |
Подробности — в разделах ниже (безопасность, админка, сборка образа).
## Скриншоты
Интерфейс на русском и английском, светлая и тёмная тема.
@@ -384,6 +397,7 @@ JSON Admin API: HTTP Basic (`ADMIN_USERNAME` / `ADMIN_PASSWORD`), тег OpenAPI
### Docker Hub (`make release`)
Сборка **multi-arch** (`linux/amd64` + `linux/arm64`) через Docker Buildx и push манифеста на Docker Hub.
Пушится только полный тег `$(RELEASE_REGISTRY)/$(IMAGE_NAME):$(IMAGE_TAG)` (по умолчанию `inecs/wrapped:…`) — короткий тег вроде `wrapped:0.1.0` при `--push` ушёл бы в `docker.io/library/…` и получил бы отказ в авторизации.
```bash
docker login # пользователь inecs
@@ -394,6 +408,7 @@ make release RELEASE_PLATFORMS=linux/arm64 # одна платформа
```
Нужны Docker Buildx и (для cross-build) QEMU/эмуляция — на Docker Desktop обычно уже есть.
Первый запуск создаёт builder `wrapped-release` (`make buildx-setup` внутри `release`).
Эквивалент:
@@ -405,6 +420,7 @@ docker buildx build \
--push .
```
После успешного push Makefile печатает краткий `imagetools inspect` (платформы в манифесте).
Образ при старте: `alembic upgrade head` + uvicorn `:8000`. Healthcheck: `GET /health`.
### Git (`make push`)
@@ -467,7 +483,8 @@ external:
| `make logs` / `make ps` / `make restart` | Логи, статус, рестарт app |
| `make migrate` | `alembic upgrade head` |
| `make revision m="msg"` | Новая alembic-ревизия |
| `make release` | Multi-arch образ (amd64+arm64) на Docker Hub (+ Helm package) |
| `make release` | Multi-arch образ (amd64+arm64) Docker Hub (`inecs/wrapped`) + Helm package |
| `make buildx-setup` | Создать/выбрать Buildx builder `wrapped-release` (вызывается из `release`) |
| `make push` | git add → многострочный commit (Ctrl-D) → push |
| `make helm-lint` / `make helm-package` | Helm |
@@ -479,6 +496,7 @@ external:
- PostgreSQL 16+
- S3-совместимое хранилище (MinIO и т.п.)
- Docker Compose v2
- для `make release`: Docker Buildx (+ QEMU для cross-build arm64 на amd64 и наоборот)
---