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
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:
+30
-10
@@ -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
|
||||
|
||||
|
||||
@@ -235,11 +235,12 @@ Demo/deployment:
|
||||
|
||||
В deployment workflow больше не используется монолитный `DEPLOY_ENV_FILE`.
|
||||
|
||||
`.env` на сервере собирается из отдельных GitHub secrets, причем имя секрета совпадает с именем
|
||||
runtime env-переменной. Это значит, что:
|
||||
`.env` на сервере собирается из OpenBao. В Gitea Actions хранятся только bootstrap credentials
|
||||
`BAO_ADDR`, `BAO_TOKEN` и `BAO_SECRET_PATH`, а внутри OpenBao ключи совпадают с именами
|
||||
runtime env-переменных. Это значит, что:
|
||||
|
||||
- `CRANK_MASTER_KEY` хранится как GitHub secret `CRANK_MASTER_KEY`;
|
||||
- `CRANK_DEMO_SEED` хранится как GitHub secret `CRANK_DEMO_SEED`;
|
||||
- `CRANK_MASTER_KEY` хранится в OpenBao как ключ `CRANK_MASTER_KEY`;
|
||||
- `CRANK_DEMO_SEED` хранится в OpenBao как ключ `CRANK_DEMO_SEED`;
|
||||
- и так же для остальных runtime-переменных.
|
||||
|
||||
Для БД основной runtime-контракт теперь компонентный:
|
||||
|
||||
Reference in New Issue
Block a user