From 10dec49047c0a5bae5cf4b2470c1a4a50bfddae2 Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Sat, 17 Oct 2026 09:10:18 +0300 Subject: [PATCH] docs: document Nexus delivery with shared account (WealthLedger/docs#18) --- architecture/deployment.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/architecture/deployment.md b/architecture/deployment.md index e73dc7b..a8e382f 100644 --- a/architecture/deployment.md +++ b/architecture/deployment.md @@ -12,7 +12,7 @@ Development-команды ниже выполняются из workspace с che - Docker Engine с Compose plugin **не ниже 2.24.4** (`!override` в development), доступ к registry и достаточно свободного диска для non-root UID 1000. - Production images `0.2.3` опубликованы для Linux amd64. + Опубликованные images собраны для Linux amd64 (см. README комплекта). Другую архитектуру проверяют отдельно; multi-platform images не обещаны. - Nexus Docker hosted repository `docker-hosted`, доступный через `nexus.personal.ksv741.ru/docker-hosted/`. Docker Bearer Token Realm включён; @@ -26,7 +26,10 @@ Development-команды ниже выполняются из workspace с che используется сервером для загрузки образов. Для публикации нужны browse/read/add/edit на `docker-hosted`; фактически выданный набор прав настраивается в Nexus. Built-in - workflow token не заменяет эту настройку. + workflow token не заменяет эту настройку. Отдельной read-only учётной записи + сервера нет: `wealthledger-ci` работает и как CI writer, и как server reader, + поэтому её пароль на сервере даёт право публикации в `docker-hosted`. Это + принятое владельцем решение; разделение ролей — возможное усиление. - На сервере Caddy уже завершает TLS и передаёт весь домен на `127.0.0.1:8080` (или выбранный frontend port). Отдельного `/api` upstream нет. DNS, TLS, firewall и provisioning Caddy выполняются вне этого runbook. @@ -81,7 +84,8 @@ Workflow отказывается перезаписывать существу Выберите опубликованные version tags, выполните pull и сравните OCI revision с release commit. Выполните smoke с disposable data/config до первого server rollout. В `release.env` комплекта хранится пара полных image references, например -`nexus.personal.ksv741.ru/docker-hosted/wealthledger/frontend:0.2.3`. Сохраните versions/revisions +`nexus.personal.ksv741.ru/docker-hosted/wealthledger/frontend:1.1.0` и +`.../backend:2.1.0`. Сохраните versions/revisions в deployment record. Release tags не должны переназначаться другим images. ## Перенос существующих images из Gitea @@ -91,7 +95,9 @@ rollout. В `release.env` комплекта хранится пара полн `REGISTRY_USERNAME`/`REGISTRY_TOKEN` сохраните для отката старого workflow. Пароли вводятся интерактивно или через `--password-stdin`, не через аргументы. -Скопируйте каждый опубликованный release без пересборки. Например, для `0.2.0` +Прежние images лежат в [Gitea packages](https://git.personal.ksv741.ru/WealthLedger/-/packages) +(`git.personal.ksv741.ru/wealthledger/{frontend,backend}`); новые публикуются +только в Nexus. Скопируйте каждый опубликованный release без пересборки. Например, для `0.2.0` с установленным Skopeo и доступом чтения Gitea/записи Nexus: ```bash @@ -114,7 +120,9 @@ artifact повторно не публикуйте; несовпадение т После копирования сравните digests через `skopeo inspect --raw` и SHA-256, выполните `docker pull` обоих images пользователем `wealthledger-ci` на сервере приложения, проверьте OCI revision и container smoke на disposable data. -Только после этого меняйте production image references и запускайте обычную +Серверные шаги (login, pull, smoke) в репозитории не подтверждены и +выполняются оператором. Только после них меняйте +production image references и запускайте обычную последовательность обновления ниже. Старые Gitea packages и references сохраните: откат registry возвращает прежние адреса тех же artifacts, не восстанавливает SQLite и не меняет encryption keys. Не переносите Git release tags и не