Cara Menyiapkan Staging Environment di EmDash CMS

Staging environment paling penting persis sebelum perubahan schema yang destruktif — menghapus field, merestrukturisasi collection — di mana menguji terhadap salinan produksi yang bisa dibuang sungguh-sungguh lebih aman dibanding mencari tahu apa yang rusak secara live. Dokumentasi deployment EmDash sendiri mendeskripsikan persis pola ini buat Cloudflare Workers; ide yang sama menggeneralisasi dengan bersih ke hosting Node.js.
Daftar Isi
- Pola Cloudflare Workers (Terdokumentasi)
- Merehearsal Perubahan Schema di Staging
- Padanan Node.js: Konfigurasi Berbasis-Environment
- Menjaga Model Konten Staging Tetap Sinkron
- Pulih dari Kesalahan di Staging (Di Mana Itu Memang Seharusnya Terjadi)
- Pertanyaan yang Sering Diajukan
- Apakah staging harus khusus-Cloudflare?
- Seberapa sering saya harus menyegarkan data staging dari produksi?
- Bisakah saya cuma menguji perubahan schema secara lokal alih-alih di deployment staging sesungguhnya?
- Apakah EmDash membebankan biaya ekstra buat deployment staging?
- Kesimpulan
Pola Cloudflare Workers (Terdokumentasi)
Tambahkan blok environment `preview` ke `wrangler.jsonc`, dengan database D1-nya sendiri:
{
"env": {
"preview": {
"d1_databases": [
{ "binding": "DB", "database_name": "emdash-db-preview" }
]
}
}
}Salin data produksi ke dalamnya — ekspor dan re-import langsung:
npx wrangler d1 export emdash-db --remote --output=./prod.sql
npx wrangler d1 execute emdash-db-preview --remote --file=./prod.sqlDeploy ke environment preview secara spesifik:
npx wrangler deploy --env previewItu memberimu URL live yang sepenuhnya terpisah yang berjalan terhadap salinan (point-in-time) nyata konten produksimu — aman buat menguji perubahan schema yang berisiko terhadapnya sebelum menyentuh database sesungguhnya.
Merehearsal Perubahan Schema di Staging
Perintah CLI `emdash schema` EmDash berbicara ke instance yang berjalan lewat REST API-nya, jadi perintah yang sama yang akan mengubah produksi bekerja identik terhadap URL preview-mu dulu:
npx emdash schema remove-field posts legacy_field --url https://preview.your-site.workers.dev- Jalankan perubahan schema terhadap URL preview.
- Verifikasi situsnya me-render dengan benar dan admin panel berperilaku seperti yang diharapkan.
- Baru setelah itu, jalankan perintah identik terhadap URL produksimu.
Menghapus field menghapus kolom dan datanya. Uji perubahan schema terhadap environment preview sebelum menjalankannya terhadap produksi.
Padanan Node.js: Konfigurasi Berbasis-Environment
Buat deployment non-Cloudflare, ide yang sama bekerja dengan config yang memilih database berbeda tergantung environment — tanpa tooling khusus-wrangler dibutuhkan, cuma sebuah kondisional di `astro.config.mjs`:
import { sqlite, postgres } from "emdash/db";
const database = process.env.STAGING
? postgres({ connectionString: process.env.STAGING_DATABASE_URL })
: postgres({ connectionString: process.env.DATABASE_URL });
export default defineConfig({
integrations: [emdash({ database })],
});Deploy codebase yang sama ini dua kali — sekali dengan `DATABASE_URL` menunjuk ke database produksimu sesungguhnya, sekali dengan `STAGING=true` dan `STAGING_DATABASE_URL` menunjuk ke database terpisah — dan kamu punya dua instance EmDash independen yang berbagi satu codebase, persis prinsip yang sama seperti pola preview Cloudflare.
Menjaga Model Konten Staging Tetap Sinkron
Staging environment cuma berguna kalau ia mencerminkan model kontenmu sesungguhnya, bukan yang basi. File seed EmDash adalah mekanisme buat ini — ekspor schema live (dan opsional konten) dan commit, jadi environment baru mana pun (termasuk staging) bootstrap ke model saat ini alih-alih yang usang:
npx wrangler d1 export emdash-db --remote --output=./prod.sql
sqlite3 prod.db < prod.sql
npx emdash export-seed --database prod.db > .emdash/seed.jsonCommit `.emdash/seed.json` yang diperbarui berdampingan dengan kode yang bergantung pada schema baru. Dengan cara itu, staging environment baru yang di-bootstrap dari database kosong berakhir dengan model konten yang sama yang sesungguhnya dijalankan produksi, bukan default template starter.
Pulih dari Kesalahan di Staging (Di Mana Itu Memang Seharusnya Terjadi)
- Field terhapus karena kesalahan — pulihkan dari backup point-in-time D1 Time Travel, atau tambahkan lagi field-nya dan pulihkan nilainya dari `wrangler d1 export` sebelumnya.
- Environment baru di-bootstrap dengan model yang salah — seed yang tertanam basi; perbarui `.emdash/seed.json`, rebuild, dan bootstrap ulang terhadap database kosong.
- Schema dan template tidak sepakat — urutan berubah secara sengaja: perubahan schema aditif (collection baru, field opsional baru) di-deploy sebelum kode yang memakainya; buat penghapusan, deploy dulu kode yang berhenti memakai field, lalu hapus field-nya.
Pertanyaan yang Sering Diajukan
Apakah staging harus khusus-Cloudflare?
Tidak — pola Cloudflare adalah yang didokumentasikan secara eksplisit oleh EmDash (memakai export/import D1 dan blok environment Wrangler), tapi ide yang mendasarinya — deployment kedua, database terpisah — bekerja identik di target hosting Node.js mana pun memakai environment variable.
Seberapa sering saya harus menyegarkan data staging dari produksi?
Sebelum sesi pengujian signifikan mana pun, dan pastinya sebelum merehearsal perubahan schema yang destruktif — data staging yang basi bisa menyembunyikan konflik nyata yang cuma muncul terhadap konten produksi saat ini.
Bisakah saya cuma menguji perubahan schema secara lokal alih-alih di deployment staging sesungguhnya?
Buat perubahan non-destruktif, pengujian SQLite lokal sering cukup. Buat perubahan yang sungguh-sungguh destruktif (penghapusan field, restrukturisasi collection) di database D1/Postgres produksi, pengujian terhadap salinan nyata data produksi secara khusus — bukan database dev lokal dengan data sampel — menangkap masalah yang bisa terlewat pengujian lokal.
Apakah EmDash membebankan biaya ekstra buat deployment staging?
Tidak — EmDash sendiri tidak punya biaya lisensi di skala mana pun. Biaya staging environment murni infrastruktur yang menjalankannya (database D1 dan Worker kedua, atau deployment Node.js kedua), yang biasanya minimal buat preview environment bertraffic rendah.
Kesimpulan
Staging environment buat EmDash secara fundamental adalah deployment kedua yang menunjuk ke salinan database terpisah — didokumentasikan secara eksplisit buat alur kerja D1/Wrangler Cloudflare, dan langsung buat direplikasi di host Node.js mana pun dengan konfigurasi berbasis-environment. Pakai secara khusus sebelum perubahan schema yang destruktif, dan jaga file seed-nya tetap terkini supaya mencerminkan model konten sesungguhnya. Lihat panduan kami soal mengustomisasi model konten buat perubahan schema yang layak direhearsal dengan cara ini.








Komentar