Bỏ qua để đến nội dung

Staging, production và duyệt

Mỗi project có một hoặc nhiều environment: mỗi cái là một bản chạy riêng của app, có Postgres, secret, bucket và URL riêng. Secret ở production không có ở staging, và ngược lại.

Loại Tạo thế nào Deploy
production Tự có khi tạo app từ GitHub Luôn chờ Owner hoặc Admin approve
staging Tạo tay, tối đa một cái (xem bên dưới) Tự deploy, trừ khi migration đổi hoặc xoá data
Preview pr<số> Tự tạo theo pull request, ở gói có preview Như staging. Xem Preview theo pull request

URL mặc định của mỗi environment:

https://<tên-project>-<tên-environment>-<6 ký tự cuối mã workspace>.onembra.com
Production Staging
Approve Mọi plan, kể cả không có migration Chỉ khi migration đổi hoặc xoá data
Postgres Riêng Riêng, không copy data production
Secret, bucket, domain Riêng Riêng, đặt lại cho staging
RAM, CPU Cỡ app trong resource pool của gói Một nửa RAM, CPU và IOPS của gói (tối thiểu 256 MiB RAM, 0,25 vCPU), không lấy từ pool
Disk Theo gói Như production
Giá Trong giá gói Gói Start không có staging. Gói khác tính thêm hằng tháng, xem bảng giá

Chỉ Owner tạo được staging khi staging tính tiền vào hoá đơn, và phải là người thật vừa login.

  1. Mở project → “Tạo mới” → “Environment mới”.

  2. Nhập Tên environment, ví dụ staging (chữ thường, số, dấu -).

  3. Ở Loại environment, chọn staging → “Xác nhận tạo environment”.

    Hộp thoại Tạo environment với Loại environment là staging

  4. Mở Cài đặt → Source code của environment mới, chọn Repository. Trong “Advanced config”, nhập Branch (ví dụ develop) → “Kết nối repo”.

  5. Mở Cài đặt → Secrets, đặt secret cho staging. Xem Secret.

Từ giờ, mỗi lần push lên branch đó, Embra build và deploy staging.

Nếu bạn thấy Làm gì
Gói … không có staging. … hoặc Mỗi project có tối đa một staging. … Nâng gói, hoặc xoá staging cũ. Giới hạn tính trên cả workspace. Xem QUOTA_EXCEEDED
Workspace đang trong kỳ trả trước tới … Chưa thêm staging trên console được khi đang trả trước. Gửi email hello@embra.cloud, đội Embra làm giúp

Build xong, Embra tạo plan: tóm tắt mọi thứ sẽ đổi khi deploy. Người duyệt xem đúng plan này.

push → build → plan → (diễn tập migration) → chờ duyệt? → deploy
Phần trong plan Nội dung
Code mới (image) Image cũ và image mới
Secret Thêm, bỏ hoặc đổi version. Không bao giờ hiện giá trị
Environment variables Thêm, bỏ hoặc đổi. Xem Biến môi trường
Migration File chờ chạy, kết quả rehearsal trên bản copy data, thay đổi schema và Dữ liệu có thể mất

Plan có migration được rehearsal trên bản copy data trước. Rehearsal fail thì plan dừng với MIGRATION_REHEARSAL_FAILED, database thật chưa bị đụng tới.

Trường hợp Production Staging, preview
Không có migration Chờ approve Tự deploy
Migration an toàn, lock bảng lâu, hoặc không chạy trong transaction Chờ approve Tự deploy
Migration đổi hoặc xoá data Chờ approve Chờ approve
Rehearsal ước tính sẽ mất row Chờ approve, gõ thêm CONFIRM_MIGRATION Chờ approve, gõ thêm CONFIRM_MIGRATION
Migration chưa hỗ trợ Bị từ chối, xem MIGRATION_UNSUPPORTED Bị từ chối
  • Chỉ Owner và Admin. Developer, Viewer và AI agent không approve được, nhưng Developer và agent vẫn tạo được plan.
  • Cần người thật: session web login trong vòng 12 giờ. Quá 12 giờ thì login lại (REAUTH_REQUIRED).
  • Machine token (CI, agent) không bao giờ approve được (HUMAN_REQUIRED).

Chi tiết: Thành viên và phân quyền.

  1. Mở trang Tổng quan của environment. Thanh plan hiện “… thay đổi chờ áp dụng”, hoặc mục “Chờ bạn duyệt” → bấm “Xem và duyệt”.
  2. Đọc phần Tác động (code, secret, environment variables) và phần Migration (kết quả rehearsal, Thay đổi schema, Dữ liệu có thể mất).
  3. Xem Hạn duyệt ở phần Quyết định của bạn.
  4. Chỉ production: gõ tên environment vào ô “Gõ … để chắc là bạn đang duyệt đúng chỗ”.
  5. Có cảnh báo mất data: gõ CONFIRM_MIGRATION vào ô “Gõ CONFIRM_MIGRATION để xác nhận rủi ro dữ liệu”.
  6. Bấm “Duyệt và deploy”, hoặc “Từ chối”.

Developer mở trang này vẫn xem được plan, nhưng chỗ nút duyệt chỉ hiện “Chỉ owner hoặc admin thực hiện được”. Gửi link trang cho Owner hoặc Admin.

Kết quả Chuyện gì xảy ra
Duyệt Deploy vào hàng chạy: migration (nếu có), rồi bản mới chạy song song bản cũ tới khi đạt health check. Xem Health check
Từ chối Plan bị huỷ, không áp dụng gì. App đang chạy vẫn chạy. Sửa code rồi push lại để có plan mới
Hết hạn Plan bị huỷ (APPROVAL_EXPIRED). Bấm “Build lại” để có plan mới
Có build mới Plan cũ do build tạo bị huỷ, để không bao giờ approve nhầm bản cũ. Duyệt plan mới
Environment đổi trong lúc chờ Plan bị huỷ (GENERATION_CONFLICT), ví dụ vì vừa rollback
Loại plan Hạn duyệt
Plan production Hết hạn sau 24 giờ kể từ lúc tạo
Plan có migration (cả staging) Phụ thuộc kết quả rehearsal, dùng được 24 giờ. Quá hạn thì không approve được, build lại để rehearsal lại

Rollback code không cần approve. Xem Rollback.