Tìm hiểu về tính năng Lưu trữ ứng dụng và cách hoạt động của tính năng này

Tính năng Lưu trữ ứng dụng xử lý một loạt tác vụ phức tạp trong nền để đơn giản hoá quá trình triển khai ứng dụng. Trang này mô tả các phần chính của quy trình tác vụ đó, cung cấp thông tin về các điểm mà bạn có thể muốn tuỳ chỉnh luồng tuỳ thuộc vào nhu cầu của ứng dụng.

Hỗ trợ khung

Tính năng Lưu trữ ứng dụng cung cấp tính năng hỗ trợ xây dựng và triển khai không cần cấu hình cho các ứng dụng web được phát triển trong các khung sau:

  • Next.js 13 trở lên
  • Angular 17.2 trở lên

Tính năng Lưu trữ ứng dụng giúp xác định khung mà bạn đang sử dụng bằng cách kiểm tra tệp package-lock.json hoặc tệp khoá khác trong kho lưu trữ của bạn. Nếu bạn cố gắng triển khai ứng dụng Node.js thiếu tệp khoá, thì tính năng Lưu trữ ứng dụng sẽ không tạo và chạy được ứng dụng của bạn. Bạn có thể tạo package-lock.json bằng cách chạy npm install trong thư mục gốc.

Bộ chuyển đổi khung Lưu trữ ứng dụng có hai vai trò chính:

  1. Chúng phân tích cú pháp mã nguồn và mọi tệp cấu hình dành riêng cho khung (chẳng hạn như next.config.js) để hiểu hành vi đã định cấu hình của ứng dụng.
  2. Họ chạy lệnh tạo của ứng dụng để tạo các thành phần tĩnh và tạo một phiên bản tối ưu hoá của ứng dụng để phát hành công khai.

Các bộ chuyển đổi khung tạo ứng dụng Node.js của bạn bằng npm run build, hoạt động hiệu quả nhất với các tập lệnh bản dựng mặc định cho từng khung: next build cho Next.js và ng build cho Angular. Tính năng Lưu trữ ứng dụng sẽ cố gắng tạo bản dựng bằng các lệnh tạo tuỳ chỉnh, nhưng không thể đảm bảo sự thành công.

Cách hoạt động của quá trình tích hợp kho lưu trữ Lưu trữ ứng dụng

Mối kết nối quan trọng giữa kho lưu trữ GitHub và phần phụ trợ Lưu trữ ứng dụng do Developer Connect (Kết nối nhà phát triển) xử lý. Đây là nền tảng kết nối của Google Cloud dành cho các công cụ DevOps (Phát triển và vận hành) bên ngoài. Trong quá trình tạo phần phụ trợ Lưu trữ ứng dụng, quy trình làm việc trên giao diện người dùng của Developer Connect sẽ hướng dẫn bạn cài đặt ứng dụng Firebase GitHub. Các bước quan trọng trong quy trình này là:

  1. Bạn cấp cho Developer Connect vai trò Quản trị viên Trình quản lý bí mật. Điều này cho phép hệ thống lưu trữ an toàn thông tin đăng nhập dưới dạng "bí mật" trong Cloud Secret Manager.
  2. Bạn cho phép ứng dụng Firebase GitHub truy cập vào kho lưu trữ GitHub của bạn.
  3. Developer Connect lưu trữ mã thông báo uỷ quyền GitHub riêng trong kho lưu trữ trình quản lý bí mật của dự án; đừng sửa đổi hoặc xoá mã thông báo này.

Ngoài ra, tính năng Lưu trữ ứng dụng còn tích hợp với API kiểm tra GitHub để cung cấp quy trình kiểm tra cho quá trình phát hành. Bước kiểm tra này giúp bạn xem trạng thái phát hành trong GitHub và gỡ lỗi quá trình triển khai nếu có lỗi.

Tích hợp với Firebase và các dịch vụ khác của Google

Tính năng Lưu trữ ứng dụng thiết lập cả môi trường bản dựng và môi trường thời gian chạy để bạn có thể khởi động SDK quản trị Firebase bằng Thông tin xác thực mặc định của ứng dụng Google. Nhờ đó, phần phụ trợ của bạn có thể giao tiếp với các sản phẩm khác của Firebase trong cả quá trình xây dựng và triển khai.

Tài khoản dịch vụ phụ trợ Lưu trữ ứng dụng

Trong quá trình xây dựng và trong thời gian chạy, phần phụ trợ Lưu trữ ứng dụng sẽ xác thực với các dịch vụ khác của Google bằng tài khoản dịch vụ. Hệ thống sẽ tạo một tài khoản dịch vụ mặc định cho những mục đích này trong lần đầu tiên bạn bật tính năng Lưu trữ ứng dụng trong một dự án Firebase:

firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com

Theo mặc định, tài khoản dịch vụ này áp dụng cho tất cả phần phụ trợ và chỉ có một nhóm quyền tối thiểu để cho phép bạn tạo, chạy và giám sát ứng dụng. Tài khoản này cũng có quyền xác thực SDK dành cho quản trị viên bằng Thông tin xác thực mặc định của ứng dụng để thực hiện các thao tác như tải dữ liệu từ Cloud Firestore. Xem Các vai trò trong tính năng Lưu trữ ứng dụng Firebase.

Nếu ứng dụng của bạn cần tương tác với các dịch vụ bổ sung của Google tại thời gian xây dựng hoặc qua một phần phụ trợ đang chạy, thì bạn có thể tuỳ chỉnh tài khoản dịch vụ mặc định bằng cách thêm vai trò. Ví dụ: nếu ứng dụng của bạn yêu cầu quyền đối với Vertex AI, thì có thể bạn cần phải thêm roles/aiplatform.user hoặc một vai trò liên quan.

Các thuật ngữ và định nghĩa quan trọng

  • Phần phụ trợ: Tập hợp tài nguyên được quản lý mà tính năng Lưu trữ ứng dụng tạo ra để xây dựng và chạy ứng dụng web của bạn.
  • Phát hành: Một phiên bản cụ thể của ứng dụng đang hoạt động, được liên kết với một git cam kết.
  • Nhánh trực tiếp: Nhánh của kho lưu trữ GitHub được triển khai cho URL đang hoạt động. Thông thường, đó là nhánh mà các nhánh tính năng hoặc nhánh phát triển được hợp nhất.

Các vấn đề và hạn chế đã biết

Bản xem trước Lưu trữ ứng dụng có một số hạn chế đã biết:

  • Trong một số trường hợp, phần phụ trợ của Lưu trữ ứng dụng có thể trả về thông báo Intermittent connection error tại URL của ứng dụng. Chúng tôi sẽ sửa lỗi trong bản phát hành sau này.
  • Các tiêu đề bộ nhớ đệm được sửa đổi để giới hạn thời gian lưu bộ nhớ đệm của CDN ở mức 60 giây; trong tương lai, khi tính năng Lưu trữ ứng dụng có thể nhanh chóng xoá hoàn toàn bộ nhớ đệm khi triển khai, giới hạn này sẽ được gỡ bỏ.
  • Các tệp tĩnh không được lưu vào bộ nhớ đệm được phân phát từ Cloud Run. Trong bản phát hành sau này, các tệp này sẽ được lưu trữ và phân phát từ nguồn gốc Lưu trữ ứng dụng để đạt được hiệu suất tốt hơn.
  • Ký tự đại diện miền con dưới dạng miền tuỳ chỉnh sẽ có trong bản phát hành sau này.
  • Các SKU lưu trữ ứng dụng có thể không hiển thị trong trang sử dụng phần phụ trợ trong bảng điều khiển của Firebase. Chúng sẽ có trong bản phát hành sau này.
  • Bảng điều khiển của Firebase có thể liên tục hiển thị lỗi "không tìm thấy bản dựng và không hợp lệ" khi tạo phần phụ trợ.
  • Hiện tại, chúng tôi không hỗ trợ những dự án có tệp package.json lồng nhau, bất kể root\_directory được định cấu hình bằng bảng điều khiển của Firebase hay CLI. Chúng tôi sẽ sửa lỗi trong bản phát hành sau này.
  • Hiện tại, tất cả các phần phụ trợ trong cùng một dự án có chung một org/account trên GitHub. Họ có thể được kết nối với những kho lưu trữ khác trong tổ chức/tài khoản đó. Để tạo các phần phụ trợ được kết nối với nhiều tài khoản GitHub, hãy đặt các phần phụ trợ đó trong các dự án riêng biệt.