Kiểm thử cục bộ quá trình triển khai ứng dụng

Bạn có thể kiểm thử cục bộ ứng dụng của mình trước khi triển khai App Hosting bằng trình mô phỏng App Hosting, một phần của Bộ công cụ mô phỏng cục bộ Firebase.

Trước khi sử dụng trình mô phỏng App Hosting, hãy đảm bảo rằng bạn hiểu rõ quy trình làm việc tổng thể của Local Emulator Suite Firebase, đồng thời cài đặt và định cấu hình Local Emulator Suite cũng như xem lại các lệnh CLI của trình mô phỏng này.

Chủ đề này giả định rằng bạn đã quen thuộc với App Hosting. Nếu cần, hãy xem lại hướng dẫn về App Hosting và các tài liệu khác để giúp bạn tìm hiểu cách hoạt động của App Hosting.

Tôi có thể làm gì với trình mô phỏng App Hosting?

Trình mô phỏng App Hosting cho phép bạn kiểm thử và tinh chỉnh các ứng dụng web trên máy. Điều này có thể giúp đơn giản hoá quy trình phát triển và nâng cao chất lượng của các ứng dụng web được tạo bằng Firebase và triển khai trên App Hosting.

Trình mô phỏng App Hosting:

  1. Cho phép bạn chạy ứng dụng web cục bộ, với các biến môi trường được xác định trong tệp cấu hình apphosting.yaml.
  2. Có thể xuất các thông tin bảo mật mà bạn đã lưu trong nhiều môi trường App Hosting, cho phép bạn mô phỏng các ứng dụng trong nhiều môi trường.
  3. Có thể dùng cùng với các trình mô phỏng Firebase khác. Nếu bạn đang sử dụng Firestore, Auth hoặc bất kỳ trình mô phỏng nào khác, Local Emulator Suite sẽ đảm bảo rằng các trình mô phỏng này được khởi động trước trình mô phỏng App Hosting.

Định cấu hình trình mô phỏng

Để bắt đầu, hãy cài đặt và khởi chạy Local Emulator Suite như mô tả trong phần Cài đặt, định cấu hình và tích hợp Bộ trình mô phỏng cục bộ. Ngoài mọi trình mô phỏng Firebase khác mà bạn muốn thiết lập, hãy nhớ chọn App Hosting Emulator. CLI sẽ nhắc bạn nhập một số giá trị trình mô phỏng App Hosting, bao gồm:

  • Thư mục gốc của ứng dụng so với dự án; điều này rất quan trọng nếu bạn đang sử dụng monorepos với App Hosting.
  • Liệu bạn có muốn xuất khoá bí mật cho một số môi trường cụ thể hay không.
firebase init emulators
=== Emulators Setup
? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ App Hosting Emulator
 ◯ Firestore Emulator
 ◯ Database Emulator
 ◯ Hosting Emulator
 ◯ Pub/Sub Emulator
 ◯ Storage Emulator
 ◯ Eventarc Emulator
(Move up and down to reveal more choices)

? Specify your app's root directory relative to your project (.)

? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ❯◯ Secrets

? Which environment would you like to export secrets from Secret Manager for?:
  ◯ base (apphosting.yaml)
 ❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
  ◯ preview (apphosting.yaml + apphosting.preview.yaml)

i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.

Mọi giá trị bạn cung cấp trong quy trình thiết lập này đều được dùng để cập nhật cấu hình trình mô phỏng App Hosting trong firebase.json. Bạn cũng có thể định cấu hình trình mô phỏng Lưu trữ ứng dụng bằng cách cập nhật trực tiếp firebase.json. Giản đồ cho trình mô phỏng Lưu trữ ứng dụng là:

{
  ...
  "emulators": {
    "apphosting": {
      "startCommandOverride": <command> [optional]
      "rootDirectory": <path> [optional]
      }
    }
  }
  • startCommandOverride được tạo và đặt tự động khi trình mô phỏng được khởi tạo. Nếu bạn không cung cấp, trình mô phỏng sẽ phát hiện và chạy lệnh dev của trình quản lý gói.
  • rootDirectory dùng để hỗ trợ việc thiết lập dự án monorepo. Nếu ứng dụng web của bạn nằm trong một thư mục con, bạn cần cung cấp đường dẫn của thư mục đó so với thư mục gốc (vị trí của firebase.json).

Quản lý tính năng mô phỏng

Quá trình khởi chạy trình mô phỏng sẽ tạo một tệp apphosting.local.yaml trong thư mục gốc của ứng dụng. Tệp cấu hình này có cùng giản đồ với tệp apphosting.yaml dùng trong bản phát hành chính thức, nhưng chỉ dành riêng cho hoạt động phát triển cục bộ. Theo mặc định, trình mô phỏng sẽ đọc cấu hình từ tệp apphosting.yaml, nhưng nếu có tệp apphosting.local.yaml, thì các cấu hình trong tệp đó sẽ được ưu tiên và được ưu tiên.

Xuất khoá bí mật để mô phỏng nhiều môi trường trên máy

Nếu đang làm việc với nhiều môi trường và muốn mô phỏng nhiều môi trường ứng dụng trên máy, bạn có thể cần các khoá của các môi trường tương ứng. Bạn có thể xuất thông tin xác thực cho một môi trường cụ thể bằng cách sử dụng lệnh CLI apphosting:config:export (hoặc như trong phần Định cấu hình trình mô phỏng, bạn có thể tuỳ ý nhập thông tin xác thực trong quá trình khởi chạy trình mô phỏng).

Lệnh này yêu cầu bạn chọn trong số các môi trường App Hosting có sẵn của dự án. Cấu hình App Hosting dành riêng cho môi trường (ví dụ: "apphosting.staging.yaml") và cấu hình App Hosting cơ sở ("apphosting.yaml") được hợp nhất, trong đó cấu hình dành riêng cho môi trường được ưu tiên. Nếu các bí mật có cùng tên tồn tại trong cả hai cấu hình, thì bí mật từ cấu hình dành riêng cho môi trường sẽ được sử dụng.

Ví dụ: để xuất thông tin bảo mật sang trình mô phỏng từ môi trường thử nghiệm:

firebase apphosting:config:export --project <your firebase project Id>

? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ❯◯ Secrets

? Which environment would you like to export secrets from Secret Manager for?:
  ◯ base (apphosting.yaml)
 ❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
  ◯ preview (apphosting.yaml + apphosting.preview.yaml)
i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.

Tệp apphosting.local.yaml của bạn sẽ được cập nhật (hoặc tạo nếu không tồn tại) bằng các khoá bí mật đã xuất dưới dạng biến môi trường. Vì tệp này hiện chứa thông tin nhạy cảm ở dạng văn bản thuần tuý, nên tệp này sẽ tự động được thêm vào tệp .gitignore để tránh vô tình được gửi vào kho lưu trữ mã nguồn.

Chạy trình mô phỏng

firebase emulators:start

Thao tác này sẽ khởi động tất cả trình mô phỏng được xác định trong tệp firebase.json, bao gồm cả trình mô phỏng App Hosting.