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
Ortam sınırı
Bölüm başlığı “Ortam sınırı”Standart geliştirme komutu değişmemiştir:
make web-devNext.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.
Gerekli değerler
Bölüm başlığı “Gerekli değerler”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ı:
make web-production-buildmake web-production-deployDeploy 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.
GitHub Actions
Bölüm başlığı “GitHub Actions”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.
Erişim sınırı
Bölüm başlığı “Erişim sını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ı:
- Worker’ı routes olmadan deploy edin; çıktı
No targets deployeddemelidir. - Cloudflare Zero Trust altında self-hosted Access uygulamasını ve allow politikasını oluşturun.
- Ancak bundan sonra custom domain route’unu
wrangler.jsonciçine ekleyip yeniden deploy edin. - Oturumsuz isteğin uygulama HTML’i yerine Access login yönlendirmesi aldığını doğrulayın.
- 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.