Skip to content

Environments / Окружения ​

Обзор ​

В проекте используется три окружения: local, dev, prod. Каждое окружение имеет свою конфигурацию сервисов, секретов и URL.

Сравнительная таблица ​

ПараметрLocalDevProduction
Cloudflare Workerswrangler dev (локально)integ.dev.happ.toolsinteg.happ.tools
API Referencelocalhost:3010/referenceinteg.dev.happ.tools/referenceinteg.happ.tools/reference
Docs (VitePress)localhost:5173—integ.docs.happ.tools
D1 DatabaseЛокальные файлы SQLiteCloudflare D1Cloudflare D1
KV CacheЛокальный KVCloudflare KVCloudflare KV
Doppler Configlocaldevprod
Секреты.dev.vars файлыCloudflare Workers SecretsCloudflare Workers Secrets

Local (Локальная разработка) ​

Описание ​

Окружение для разработки и отладки на локальной машине. Все сервисы работают локально через wrangler dev.

Компоненты ​

КомпонентURL / ПутьОписание
Integration Workerhttp://localhost:8787Wrangler dev server
D1 Databasedata/miniflare/v3/d1/Локальные SQLite файлы
KV Cachedata/miniflare/v3/kv/Локальные KV файлы

Конфигурация ​

Doppler config: local

Файлы:

  • .env — корневые переменные окружения
  • integrations/<name>/.dev.vars — переменные для wrangler dev

Команды:

bash
# Запуск интеграции
pnpm start sofa

# Запуск без генерации env из Doppler
SKIP_ENV=true pnpm start sofa

# Только генерация env файлов
pnpm generate:env -- local

Dev (Development) ​

Описание ​

Тестовое окружение на Cloudflare для проверки перед production. Используется для тестирования интеграций и новых фич.

Компоненты ​

КомпонентURLОписание
Gatewayhttps://integ.dev.happ.toolsТочка входа
Integration Workershttps://integ.dev.happ.tools/sofa/*Через Gateway
D1 DatabaseCloudflare D1Удалённая база
KV CacheCloudflare KVУдалённый кэш

Конфигурация ​

Doppler config: dev

Wrangler env: dev

Команды:

bash
# Деплой в dev
cd integrations/sofa
pnpm deploy:dev

# Или с корня проекта
pnpm --filter sofa deploy:dev

# Быстрый деплой без sync secrets
pnpm --filter sofa deploy:dev:fast

Роутинг ​

integ.dev.happ.tools/*        → integ-gateway-dev
integ.dev.happ.tools/sofa/*   → integ-sofa (env: dev)

wrangler.toml ​

wrangler.toml генерируется автоматически при запуске generate:env dev:

toml
name = "integ-sofa-dev"
main = "dist/index.js"

[vars]
ENVIRONMENT = "dev"

[[d1_databases]]
binding = "INTEG_DB"
database_name = "integ-db-dev"
database_id = "<id-из-doppler>"

Production ​

Описание ​

Боевое окружение для реальных пользователей. Максимальная надёжность и производительность.

Компоненты ​

КомпонентURLОписание
Gatewayhttps://integ.happ.toolsТочка входа
Integration Workershttps://integ.happ.tools/sofa/*Через Gateway
D1 DatabaseCloudflare D1Production база
KV CacheCloudflare KVProduction кэш

Конфигурация ​

Doppler config: prod

Wrangler env: production

Команды:

bash
# Деплой в production
cd integrations/sofa
pnpm deploy

# Или с корня проекта
pnpm --filter sofa deploy

Роутинг ​

integ.happ.tools/*        → integ-gateway
integ.happ.tools/sofa/*   → integ-sofa (env: production)

wrangler.toml ​

wrangler.toml генерируется автоматически при запуске generate:env prod:

toml
name = "integ-sofa"
main = "dist/index.js"

[vars]
ENVIRONMENT = "production"

[[d1_databases]]
binding = "INTEG_DB"
database_name = "integ-db-prod"
database_id = "<id-из-doppler>"

Gateway Service Bindings ​

Gateway роутит запросы к Integration Workers через Service Bindings.

Важно: wrangler.toml генерируется автоматически скриптом generate:env. Service bindings создаются для всех найденных интеграций.

toml
# workers/gateway/wrangler.toml (генерируется автоматически)

# Для local/dev/prod — binding генерируется из имени интеграции
[[services]]
binding = "SOFA"
service = "integ-sofa"        # local
# или service = "integ-sofa-dev"  # dev

Пример сгенерированного файла для local:

toml
name = "integ-gateway"
main = "src/index.ts"

[vars]
ENVIRONMENT = "local"

[[d1_databases]]
binding = "INTEG_DB"
database_name = "integ-db"
database_id = "00000000-0000-0000-0000-000000000001"

[[services]]
binding = "SOFA"
service = "integ-sofa"

Health Checks ​

Local ​

bash
curl http://localhost:8787/health

Dev ​

bash
curl https://integ.dev.happ.tools/health
curl https://integ.dev.happ.tools/sofa/health

Production ​

bash
curl https://integ.happ.tools/health
curl https://integ.happ.tools/sofa/health

CI/CD Flow ​

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   Local     │────>│    Dev      │────>│ Production  │
│             │     │             │     │             │
│ localhost   │     │ dev-integ   │     │ integ       │
│ :8787       │     │ .happ.tools │     │ .happ.tools │
└─────────────┘     └─────────────┘     └─────────────┘

GitHub Actions (trunk-based) ​

feat/* → PR → main            # push в main → deploy-dev.yml → dev-окружение
main → release.yml (vX.Y.Z)   # тег на HEAD main
vX.Y.Z → deploy-prod.yml      # guard: тег ancestor main → production

Ветки dev нет: dev — это деплой-таргет. Прод НИКОГДА не деплоится из ветки, только из тега. Подробности — CI_CD.md.


Связанные документы ​