ci: load deploy secrets from openbao
CI / Rust Checks (push) Has been cancelled
CI / UI Checks (push) Has been cancelled
CI / Frontend E2E (push) Has been cancelled
CI / Deployment Manifests (push) Has been cancelled
Deploy / build-images (apps/admin-api/Dockerfile, git.itexp.me/bsodfather/crank-community-admin-api, admin-api) (push) Has been cancelled
Deploy / build-images (apps/mcp-server/Dockerfile, git.itexp.me/bsodfather/crank-community-mcp-server, mcp-server) (push) Has been cancelled
Deploy / build-images (apps/ui/Dockerfile, git.itexp.me/bsodfather/crank-community-ui, ui) (push) Has been cancelled
Deploy / deploy (push) Has been cancelled

This commit is contained in:
github-ops
2026-06-16 14:55:28 +00:00
parent 15d7cfa8d9
commit 1bb16cde09
8 changed files with 165 additions and 57 deletions
+30 -10
View File
@@ -241,18 +241,38 @@ CD для MVP должен:
- self-hosted Gitea Actions runner;
- на сервере только `pull + restart`, без `docker compose up --build`.
Для private registry на сервере нужны отдельные deployment secrets:
В Gitea secrets хранится только bootstrap-доступ к OpenBao:
- `BAO_ADDR`
- `BAO_TOKEN`
- `BAO_SECRET_PATH`
Workflow читает `BAO_SECRET_PATH` через `scripts/load-openbao-env.sh` и получает оттуда deploy,
registry и runtime значения. Это оставляет Gitea runner без прямого списка прикладных секретов.
Минимальный рекомендуемый путь секрета:
```text
kv/data/crank/community/deploy
```
Секрет может быть KV v1 или KV v2. Для KV v2 workflow ожидает стандартный ответ вида
`data.data`.
В OpenBao должны лежать:
- `DEPLOY_REGISTRY_USER`
- `DEPLOY_REGISTRY_TOKEN`
Они используются только для `docker login` на целевом Linux host перед `docker compose pull`.
Монолитный `DEPLOY_ENV_FILE` больше не используется.
- `DEPLOY_SSH_KEY`
- `DEPLOY_HOST`
- `DEPLOY_PORT`
- `DEPLOY_USER`
- `DEPLOY_PATH`
- `DEPLOY_KNOWN_HOSTS`, optional
Workflow доставляет именно `deploy/community/docker-compose.yml` как public Community deployment manifest
и собирает `.env` на сервере из отдельных Gitea secrets. Для runtime-переменных нужно
создавать secrets с теми же именами, что и у приложений:
и собирает `.env` на сервере из значений OpenBao. Для runtime-переменных нужно
создавать ключи с теми же именами, что и у приложений:
- `POSTGRES_HOST`
- `POSTGRES_PORT`
@@ -280,9 +300,9 @@ Workflow доставляет именно `deploy/community/docker-compose.yml`
Практически это означает:
- одна runtime-переменная = один GitHub secret;
- ротация одного секрета не требует переписывать весь набор env;
- `.env` на сервере каждый deploy собирается заново из актуальных secrets.
- Gitea знает только OpenBao bootstrap credentials;
- ротация runtime/deploy значений делается в OpenBao;
- `.env` на сервере каждый deploy собирается заново из актуального OpenBao секрета.
## 11. Граница Community против future commercial delivery