deploy: split runtime env into individual secrets
This commit is contained in:
+30
-11
@@ -212,7 +212,7 @@ CD для MVP должен:
|
||||
1. push в `main`
|
||||
2. успешный `CI`
|
||||
3. build and push images в registry
|
||||
4. upload env и deployment files
|
||||
4. upload runtime env и deployment files
|
||||
5. `docker login` на registry на целевом хосте
|
||||
6. `docker compose config -q`
|
||||
7. `docker compose pull`
|
||||
@@ -233,19 +233,38 @@ CD для MVP должен:
|
||||
|
||||
Они используются только для `docker login` на целевом Linux host перед `docker compose pull`.
|
||||
|
||||
Для точечных runtime override без переписывания всего `DEPLOY_ENV_FILE` можно использовать
|
||||
отдельные deployment secrets. Сейчас поддержан:
|
||||
Монолитный `DEPLOY_ENV_FILE` больше не используется.
|
||||
|
||||
- `DEPLOY_MASTER_KEY`
|
||||
- `DEPLOY_DEMO_SEED`
|
||||
Workflow собирает `.env` на сервере из отдельных GitHub secrets. Для runtime-переменных нужно
|
||||
создавать secrets с теми же именами, что и у приложений:
|
||||
|
||||
Если задан `DEPLOY_MASTER_KEY`, workflow удаляет `CRANK_MASTER_KEY` из сгенерированного `.env`
|
||||
и записывает туда значение из `DEPLOY_MASTER_KEY`. Это позволяет ротировать master key или
|
||||
добавлять его отдельно, не переписывая весь `DEPLOY_ENV_FILE`.
|
||||
- `POSTGRES_DB`
|
||||
- `POSTGRES_USER`
|
||||
- `POSTGRES_PASSWORD`
|
||||
- `CRANK_DATABASE_URL`
|
||||
- `CRANK_STORAGE_ROOT`
|
||||
- `CRANK_PUBLISH_HOST`
|
||||
- `CRANK_ADMIN_BIND`
|
||||
- `CRANK_MCP_BIND`
|
||||
- `CRANK_MCP_REFRESH_MS`
|
||||
- `CRANK_LOG_LEVEL`
|
||||
- `CRANK_SECRET_PROVIDER`
|
||||
- `CRANK_MASTER_KEY`
|
||||
- `CRANK_PUBLIC_BASE_URL`
|
||||
- `CRANK_MCP_PUBLIC_URL`
|
||||
- `CRANK_SESSION_SECRET`
|
||||
- `CRANK_PASSWORD_PEPPER`
|
||||
- `CRANK_SESSION_TTL_HOURS`
|
||||
- `CRANK_BOOTSTRAP_ADMIN_EMAIL`
|
||||
- `CRANK_BOOTSTRAP_ADMIN_PASSWORD`
|
||||
- `CRANK_BOOTSTRAP_ADMIN_DISPLAY_NAME`
|
||||
- `CRANK_DEMO_SEED`
|
||||
|
||||
Если задан `DEPLOY_DEMO_SEED`, workflow удаляет `CRANK_DEMO_SEED` из сгенерированного `.env`
|
||||
и записывает туда значение из `DEPLOY_DEMO_SEED`. Это позволяет временно включать и выключать
|
||||
demo seed отдельным secret, не переписывая основной production `.env`.
|
||||
Практически это означает:
|
||||
|
||||
- одна runtime-переменная = один GitHub secret;
|
||||
- ротация одного секрета не требует переписывать весь набор env;
|
||||
- `.env` на сервере каждый deploy собирается заново из актуальных secrets.
|
||||
|
||||
## 12. Что нельзя забыть
|
||||
|
||||
|
||||
Reference in New Issue
Block a user