Přeskočit na hlavní obsah

Deployment Guide

Tento dokument popisuje, jak deployovat DnA Cruises systém do produkce.

Přehled

Systém se skládá z:

  • Cloudflare Workers - API backend
  • Cloudflare Pages - Frontend aplikace (web, load, docs)
  • Cloudflare D1 - SQLite databáze
  • Cloudflare R2 - Object storage pro soubory

Workers API Deployment

Automatický deployment (doporučeno)

Workers jsou automaticky deployovány přes Cloudflare Workers Builds při push do GitHub.

Konfigurace:

  • Production: Automaticky deploy při push do main branch
  • Development: Automaticky deploy při push do dev branch
  • Root directory: workers/api
  • Deploy commands:
    • Production: node ../../scripts/inject-build-info.js wrangler.toml && npx wrangler deploy --env production
    • Development: node ../../scripts/inject-build-info.js wrangler.toml && npx wrangler deploy --env development

Postup:

  1. Push kód do main (production) nebo dev (development) branch
  2. Cloudflare automaticky spustí build
  3. Build log je dostupný v Cloudflare Dashboard → Workers & Pages → [Worker name] → Builds

Manuální deployment

cd workers/api

# Development deployment
npx wrangler deploy --env development

# Production deployment
npx wrangler deploy --env production

Bindings

Bindings (D1, R2, environment variables) se automaticky přenášejí z wrangler.toml při každém deployi.

Důležité:

  • Deploy command MUSÍ obsahovat --env <environment> flag
  • Bindings se přenášejí z [env.production] nebo [env.development] sekcí v wrangler.toml
  • Bindings se nemusí zobrazovat v Dashboardu, ale jsou aktivní a funkční
  • V build logu uvidíš potvrzení všech bindings při deployi

Environment Variables a Secrets

Environment Variables:

  • Nastavují se v Cloudflare Dashboard → Workers & Pages → [Worker name] → Settings → Variables
  • Nebo v wrangler.toml v sekci [env.production.vars] nebo [env.development.vars]

Secrets:

  • Nastavují se přes Wrangler CLI: wrangler secret put SECRET_NAME --env production
  • Nebo v Cloudflare Dashboard → Workers & Pages → [Worker name] → Settings → Variables → Secrets

Příklad:

cd workers/api

# Set JWT_SECRET pro production
wrangler secret put JWT_SECRET --env production

# Set JWT_SECRET pro development
wrangler secret put JWT_SECRET --env development

Pages Deployment

Automatický deployment (doporučeno)

Pages jsou automaticky deployovány při push do GitHub, pokud jsou připojené k repository.

Konfigurace pro každý Pages projekt:

dna-cruises-web

  1. Jdi na https://dash.cloudflare.comPagesdna-cruises-web
  2. Klikni na Connect to Git
  3. Vyber repository: DnASound/navigator
  4. Nakonfiguruj build settings:
    • Root directory: / (nechat prázdné)
    • Build command: cd apps/web && npm install --ignore-engines && npm run build
    • Build output directory: apps/web/.next
    • Production branch: main
    • Environment variables:
      • SKIP_DEPENDENCY_INSTALL = true (Production i Preview)

dna-cruises-load

  1. Jdi na https://dash.cloudflare.comPagesdna-cruises-load
  2. Klikni na Connect to Git
  3. Vyber repository: DnASound/navigator
  4. Nakonfiguruj build settings:
    • Root directory: /
    • Build command: cd apps/load && npm install --ignore-engines && npm run build
    • Build output directory: apps/load/.next
    • Production branch: main
    • Environment variables:
      • SKIP_DEPENDENCY_INSTALL = true (Production i Preview)

dna-cruises-docs

  1. Jdi na https://dash.cloudflare.comPagesdna-cruises-docs
  2. Klikni na Connect to Git
  3. Vyber repository: DnASound/navigator
  4. Nakonfiguruj build settings:
    • Root directory: /
    • Build command: cd apps/docs && npm install && npm run build
    • Build output directory: apps/docs/build
    • Production branch: main
    • Environment variables:
      • SKIP_DEPENDENCY_INSTALL = true (Production i Preview)
      • NODE_VERSION = 20 (Production i Preview) - DŮLEŽITÉ: Docusaurus vyžaduje Node 20+

Manuální deployment

# Web app
cd apps/web
npx wrangler pages deploy .next --project-name=dna-cruises-web

# Load app
cd apps/load
npx wrangler pages deploy .next --project-name=dna-cruises-load

# Docs
cd apps/docs
npx wrangler pages deploy build --project-name=dna-cruises-docs

Poznámka: Nejdřív musíš buildnout aplikaci (npm run build).

Database Migrations

Lokální migrace (development)

cd workers/api
wrangler d1 migrations apply dna-cruises-dev --local

Production migrace

cd workers/api
wrangler d1 migrations apply dna-cruises-prod --remote

Důležité:

  • Vždy zkontroluj migrace lokálně před production deployem
  • Production migrace jsou nevratné - zálohuj databázi před migrací
  • Použij --dry-run pro testování: wrangler d1 migrations apply dna-cruises-prod --remote --dry-run

Import inventory dat

cd packages/db
node scripts/migrate-inventory.js

Nebo použij D1 SQL editor v Cloudflare Dashboard pro manuální import.

Custom Domény

Workers (API)

Production:

  1. Jdi na https://dash.cloudflare.comWorkers & Pagesdna-cruises-api
  2. Klikni na TriggersRoutesAdd route
  3. Přidej route: api.dna.cruises/*dna-cruises-api

Development:

  1. Jdi na https://dash.cloudflare.comWorkers & Pagesdna-cruises-api-dev
  2. Klikni na TriggersRoutesAdd route
  3. Přidej route: dev.api.dna.cruises/*dna-cruises-api-dev

Pages

Production (branch: main):

dna-cruises-web:

  1. Jdi na https://dash.cloudflare.comPagesdna-cruises-web
  2. Klikni na Custom DomainsSet up a custom domain
  3. Přidej doménu: dna.cruises

dna-cruises-load:

  1. Jdi na https://dash.cloudflare.comPagesdna-cruises-load
  2. Klikni na Custom DomainsSet up a custom domain
  3. Přidej doménu: load.dna.cruises

Development (preview deployment z branch: dev):

dna-cruises-web (dev):

  1. Po vytvoření preview deploymentu z dev branch jdi na Pagesdna-cruises-webDeployments
  2. Najdi deployment z dev branch (bude označen jako "Preview")
  3. Klikni na deployment → Custom DomainsSet up a custom domain
  4. Přidej doménu: dev.dna.cruises

dna-cruises-load (dev):

  1. Po vytvoření preview deploymentu z dev branch jdi na Pagesdna-cruises-loadDeployments
  2. Najdi deployment z dev branch
  3. Klikni na deployment → Custom DomainsSet up a custom domain
  4. Přidej doménu: dev.load.dna.cruises

Monitoring a Logging

Workers Logs

Workers logy jsou dostupné v:

  • Cloudflare Dashboard → Workers & Pages → [Worker name] → Logs
  • Nebo přes Wrangler CLI: wrangler tail --env production

Pages Logs

Pages logy jsou dostupné v:

  • Cloudflare Dashboard → Pages → [Project name] → Deployments → [Deployment] → View build logs

Build Status

Build status je dostupný v:

  • Cloudflare Dashboard → Workers & Pages → [Worker name] → Builds (pro Workers)
  • Cloudflare Dashboard → Pages → [Project name] → Deployments (pro Pages)

Rollback

Workers

  1. Jdi na Cloudflare Dashboard → Workers & Pages → [Worker name] → Versions
  2. Vyber předchozí verzi
  3. Klikni na Deploy

Pages

  1. Jdi na Cloudflare Dashboard → Pages → [Project name] → Deployments
  2. Najdi předchozí deployment
  3. Klikni na ...Retry deployment nebo Promote to production

Best Practices

  1. Vždy testuj lokálně před deploymentem
  2. Používej feature branches a PRs pro review
  3. Zálohuj databázi před migracemi
  4. Monitoruj build logy po každém deployi
  5. Používej environment variables místo hardcoded values
  6. Nepoužívej secrets v kódu - používej Cloudflare Secrets
  7. Testuj na development prostředí před production deployem