İçeriğe geç

Web production dağıtımı

Geliştirme · 1.0.0

Yayın

Doküman
1.0.0
Uygulama
1.0.0
Şema
1
Veri
tr-latn-1

Bu sayfa

Uygulama
1.0.0
Şema
1
Veri
tr-latn-1

Standart geliştirme komutu değişmemiştir:

Terminal window
make web-dev

Next.js bu akışta repository kökündeki yerel .env değerlerini kullanır. Cloudflare yapılandırması ve hosted Supabase değerleri yerel geliştirme akışına karışmaz.

Production reader Vinext ile Cloudflare Worker olarak derlenir. Production değerleri build sırasında process environment üzerinden verilir; Supabase public anahtarı veya başka bir credential Git’e yazılmaz. Build yardımcısı bu değerleri yalnız gitignored apps/web/dist/server/wrangler.json çıktısına da aktarır; server-side request’ler aynı production değerlerini runtime’da alır.

Terminal window
export NEXT_PUBLIC_SUPABASE_URL="https://PROJECT_REF.supabase.co"
export NEXT_PUBLIC_SUPABASE_ANON_KEY="..."
export NEXT_PUBLIC_MUNDERECAT_RUNTIME="production"
export NEXT_PUBLIC_MUNDERECAT_CONTENT_API_URL="https://api.munderecat.com/v1"
export NEXT_PUBLIC_MUNDERECAT_DOCS_URL="https://docs.example.com/"

NEXT_PUBLIC_SUPABASE_ANON_KEY tarayıcıya sunulan public istemci anahtarıdır; service-role veya başka ayrıcalıklı bir anahtar burada kullanılamaz. Bu Supabase değerleri legacy /chapters yüzeyi içindir. Yeni /reader için Content API URL’si zorunludur; API origini web build’ine açıkça verilir.

Build ve deploy komutları:

Terminal window
make web-production-build
make web-production-deploy

Deploy komutu her zaman yeniden build alır. Böylece önceki bir ortama ait NEXT_PUBLIC_* değerleriyle hazırlanmış dist/ çıktısının yanlışlıkla yayınlanması önlenir.

Production deploy otomatik olarak her push’ta çalışmaz. Maintainer, Deploy web production workflow’unu main dalında manuel tetikler. Workflow GitHub production environment’ından şu değerleri alır:

Tür Ad
Secret CLOUDFLARE_API_TOKEN
Secret NEXT_PUBLIC_SUPABASE_ANON_KEY
Variable CLOUDFLARE_ACCOUNT_ID
Variable NEXT_PUBLIC_SUPABASE_URL
Variable NEXT_PUBLIC_MUNDERECAT_RUNTIME (production)
Variable NEXT_PUBLIC_MUNDERECAT_CONTENT_API_URL (https://api.munderecat.com/v1)
Variable NEXT_PUBLIC_MUNDERECAT_DOCS_URL
Variable NEXT_PUBLIC_MUNDERECAT_WEB_URL

Cloudflare tokenı hedef account için Workers Scripts Edit ve Account Settings Read, hedef zone için Workers Routes Edit yetkilerini taşımalıdır. Account Settings izni Wrangler’ın hesabı tanıması için salt okunurdur. Access uygulaması ve politikası bu deploy tokenının yetki alanında değildir.

Workflow lint, unit test ve typecheck çalıştırır; ardından tek Vinext build’i üzerinden deploy eder. Normal Next.js build’i ve full corpus doğrulaması CI deploy işinde tekrarlanmaz; bunlar sırasıyla ana CI ve veri release kabulünün sorumluluğundadır.

apps/web/wrangler.jsonc, workers_dev ve version preview URL’lerini kapatır. Production custom domain Cloudflare Access uygulamasıyla korunmadan Worker’a bağlanmamalıdır. Preview döneminde Access politikası yalnız maintainer e-postasını içermeli; eşleşmeyen istekler deny-by-default davranışıyla reddedilmelidir.

Kontrol sırası:

  1. Worker’ı routes olmadan deploy edin; çıktı No targets deployed demelidir.
  2. Cloudflare Zero Trust altında self-hosted Access uygulamasını ve allow politikasını oluşturun.
  3. Ancak bundan sonra custom domain route’unu wrangler.jsonc içine ekleyip yeniden deploy edin.
  4. Oturumsuz isteğin uygulama HTML’i yerine Access login yönlendirmesi aldığını doğrulayın.
  5. Yetkili hesapla giriş yapıp chapter redirect, remote Supabase okuması, Osmanlıca görünüm ve term hover akışlarını smoke test edin.

Access kullanıcı kimliği uygulama verisinden bağımsızdır. Reader public olacağı zaman Access uygulaması kaldırılabilir; Worker build’i veya Supabase bağlantısı bunun için değiştirilmez.