Staging, production và duyệt
Environment là gì
Phần tiêu đề “Environment là gì”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.comStaging khác production ở đâu
Phần tiêu đề “Staging khác production ở đâu”| 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á |
Tạo staging
Phần tiêu đề “Tạo staging”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.
-
Mở project → “Tạo mới” → “Environment mới”.
-
Nhập Tên environment, ví dụ
staging(chữ thường, số, dấu-). -
Ở Loại environment, chọn
staging→ “Xác nhận tạo environment”.
-
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”. -
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 |
Plan deploy là gì
Phần tiêu đề “Plan deploy là gì”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.
Khi nào phải chờ duyệt
Phần tiêu đề “Khi nào phải chờ duyệt”| 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 |
- Migration nào thuộc nhóm nào: xem Embra kiểm migration thế nào.
- Plan chờ duyệt có mã
APPROVAL_REQUIRED, hoặcMIGRATION_DATA_LOSSkhi rehearsal thấy sẽ mất data.
Ai duyệt được
Phần tiêu đề “Ai duyệt được”- 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.
Duyệt trên console
Phần tiêu đề “Duyệt trên console”- 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”.
- Đọ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).
- Xem Hạn duyệt ở phần Quyết định của bạn.
- Chỉ production: gõ tên environment vào ô “Gõ … để chắc là bạn đang duyệt đúng chỗ”.
- Có cảnh báo mất data: gõ
CONFIRM_MIGRATIONvào ô “Gõ CONFIRM_MIGRATION để xác nhận rủi ro dữ liệu”. - 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.
Sau khi duyệt, từ chối hoặc hết hạn
Phần tiêu đề “Sau khi duyệt, từ chối hoặc hết hạn”| 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.