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:5173integ.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 (если настроено)

yaml
# push to dev branch → deploy to dev environment
# push to main branch → deploy to production

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