Quản lý phiên bản

Magdalena Skarbińska
Magdalena Skarbińska
Demián Renzulli
Demián Renzulli

Ứng dụng web tách biệt (IWA) cung cấp một môi trường thời gian chạy có độ tin cậy cao, an toàn và tách biệt theo phiên bản trên nền tảng web. Trong môi trường sản xuất (đặc biệt là trong các doanh nghiệp được quản lý), quản trị viên và nhà phát triển cần có quyền kiểm soát chi tiết đối với việc triển khai phần mềm.

Để đáp ứng các yêu cầu này, Chrome cung cấp các chức năng quản lý phiên bản toàn diện cho IWA, bao gồm Kênh cập nhật, Ghim phiên bảnHạ cấp phiên bản. Các tính năng này giúp bạn dự đoán được quá trình triển khai và kiểm soát khả năng khôi phục nhanh chóng trên cơ sở người dùng của mình.

Phạm vi cung cấp

Hành vi quản lý phiên bản phụ thuộc vào việc IWA được quản lý bởi quản trị viên hay do người dùng cài đặt trực tiếp:

  • IWA được quản lý: Các tính năng quản trị (bao gồm cả việc ghim và hạ cấp dựa trên chính sách) có trong Chrome 133.
  • Ứng dụng web có thể cài đặt (IWA) không được quản lý (do người dùng cài đặt): Các tính năng dành cho người dùng (chẳng hạn như lựa chọn kênh theo cách thủ công) có trong Chrome 150.

Khả năng tương thích của loại phiên

Tất cả các chức năng quản lý phiên bản (bao gồm cả kênh cập nhật và ghim phiên bản) đều hoàn toàn tương thích với mọi loại phiên ChromeOS. Nội dung như vậy bao gồm:

  • Phiên người dùng được quản lý tiêu chuẩn
  • Phiên khách được quản lý (MGS)
  • Môi trường Chế độ kiosk chuyên dụng

Cập nhật kênh

Bằng cách sử dụng các kênh cập nhật, nhà phát triển có thể phân đoạn các bản dựng ứng dụng cụ thể cho các đối tượng triển khai và kiểm thử riêng biệt. Để định cấu hình các kênh, hãy thêm một trường mảng kênh không bắt buộc vào từng mục nhập phiên bản trong tệp kê khai bản cập nhật ứng dụng. Các tên kênh này không bị giới hạn ở các từ khoá cố định của nền tảng (chẳng hạn như canary hoặc stable) mà thay vào đó là các giá trị nhận dạng tuỳ ý do nhà phát triển xác định. Các giá trị này phải được định dạng dưới dạng chuỗi chữ và số ASCII viết thường (có thể bao gồm dấu gạch ngang hoặc dấu gạch dưới nhưng không có dấu cách). Nếu một mục phiên bản hoàn toàn bỏ qua trường kênh, thì Chrome sẽ mặc định ngầm định tính khả dụng của mục đó thành kênh "mặc định". Cuối cùng, tên kênh được chỉ định trong chính sách quản trị phải khớp chính xác với chuỗi được xác định trong tệp kê khai; mọi lỗi chính tả hoặc cấu hình không khớp sẽ dẫn đến việc không xác định được phiên bản đủ điều kiện, khiến các bản cập nhật cho những ứng dụng đó bị dừng.

Cấu hình tệp kê khai

Để định cấu hình các kênh, hãy thêm một mảng channels không bắt buộc vào mỗi mục nhập phiên bản trong Tệp kê khai ứng dụng web. Sau đây là một số điều cần cân nhắc:

  • Liên kết kênh: Nếu một mục nhập phiên bản xác định một mảng channels, thì phiên bản đó chỉ đủ điều kiện cài đặt trên các kênh được chỉ định.
  • Dự phòng mặc định: Nếu một mục nhập phiên bản hoàn toàn bỏ qua trường channels, Chrome sẽ giả định rằng phiên bản đó chỉ thuộc về kênh default.
  • So khớp chuỗi chính xác: Tên kênh được chỉ định trong cấu hình chính sách phía máy khách phải khớp chính xác với các chuỗi được xác định trong tệp kê khai cập nhật (phân biệt chữ hoa chữ thường). Nếu không có phiên bản nào khớp với tên kênh mục tiêu, thì ứng dụng sẽ không tìm thấy bản cập nhật đủ điều kiện.

Ví dụ về tệp kê khai cập nhật

Ví dụ sau đây cho thấy một tệp kê khai cập nhật hỗ trợ nhiều kênh phát hành:

{
  "versions": [
    {
      "version": "0.1.0",
      "src": "https://github.com/chromeos/iwa-sink/releases/download/v0.1.0/iwa-sink.swbn",
      "channels": ["delta"]
    },
    {
      "version": "0.2.0",
      "src": "https://github.com/chromeos/iwa-sink/releases/download/v0.2.0/iwa-sink.swbn",
      "channels": ["delta", "default"]
    },
    {
      "version": "0.3.0",
      "src": "https://github.com/chromeos/iwa-sink/releases/download/v0.3.0/iwa-sink.swbn",
      "channels": ["beta", "delta"]
    },
    {
      "version": "0.4.0",
      "src": "https://github.com/chromeos/iwa-sink/releases/download/v0.4.0/iwa-sink.swbn"
    }
  ]
}

Dựa trên tệp kê khai này, mỗi kênh mục tiêu sẽ có các phiên bản sau:

  • mặc định: 0.2.0,0.4.0 (không có kênh rõ ràng và mặc định là mặc định)
  • delta: 0.1.0, 0.2.0, 0.3.0
  • beta: 0.3.0

Công cụ cập nhật IWA hỗ trợ nhắm đến các kênh phát hành cụ thể bằng cách tìm kiếm một trường kênh trong Tệp kê khai bản cập nhật của ứng dụng.

Ghim phiên bản

Trong môi trường doanh nghiệp có mức độ tuân thủ cao hoặc tính ổn định cao, quản trị viên phải đảm bảo các thiết bị chạy chính xác các phiên bản phần mềm quan trọng đối với doanh nghiệp. Tính năng ghim phiên bản cho phép quản trị viên khoá một IWA ở một phiên bản cụ thể, ngăn chặn mọi bản cập nhật tiếp theo ở chế độ nền. Điều này giúp doanh nghiệp duy trì cấu hình ổn định và tuân thủ các quy định nghiêm ngặt của nội bộ hoặc ngành một cách đáng tin cậy.

Để cố định một Ứng dụng web tách biệt (IWA) ở một bản phát hành cụ thể, quản trị viên doanh nghiệp có thể định cấu hình thuộc tính pinned_version trong chính sách IsolatedWebAppInstallForceList. Khả năng này chủ yếu được quản lý thông qua các thành phần điều khiển trên giao diện người dùng tương tác trong Bảng điều khiển dành cho quản trị viên của Google trong bảng chi tiết của ứng dụng theo quy trình làm việc cài đặt IWA tiêu chuẩn, mặc dù quản trị viên cũng có thể linh hoạt giữ lại để triển khai trực tiếp các giá trị chính sách này bằng cách sử dụng cấu hình JSON thô. Sau khi quản trị viên nhắm đến thành công một chuỗi phiên bản hợp lệ, Chrome sẽ kéo gói rõ ràng đó và chặn tất cả các bản cập nhật tự động tiếp theo.

Hành vi và các ràng buộc đặc biệt

  • Tiếp tục cập nhật (Huỷ ghim): Để khôi phục tính năng cập nhật tự động, hãy xoá thuộc tính pinned_version hoặc thay đổi giá trị của thuộc tính này thành phiên bản mục tiêu mới hơn.
  • Không hạ cấp theo mặc định: Việc đặt pinned_version thành một phiên bản thấp hơn phiên bản hiện đang cài đặt sẽ không kích hoạt quy trình khôi phục trừ phi bạn bật rõ ràng allow_downgrades.
  • Mục tiêu ghim không có sẵn: Nếu pinned_version đã định cấu hình bị thiếu trong kênh cập nhật được chỉ định hoặc cũ hơn phiên bản đã cài đặt (khi tắt tính năng hạ cấp), Chrome sẽ giữ lại phiên bản hiện đã cài đặt và chặn mọi bản cập nhật tiếp theo.
  • Triển khai mới: Nếu IWA chưa được cài đặt trên một thiết bị được quản lý và không thể truy xuất pinned_version được chỉ định hoặc pinned_version đó bị thiếu trong tệp kê khai cập nhật, thì IWA sẽ không cài đặt được.

Hạ cấp phiên bản

Nếu bản cập nhật mới triển khai có lỗi hoặc lỗ hổng nghiêm trọng, thì có thể quản trị viên cần khôi phục thiết bị về trạng thái ổn định trước đó. Chrome hỗ trợ hạ cấp các IWA được quản lý đã cài đặt xuống phiên bản thấp hơn – một khả năng mà trước đây không có trên nền tảng khi chỉ cho phép cập nhật chuyển tiếp.

Bạn chỉ có thể hạ cấp nếu cả hai điều kiện sau đây trong chính sách đều được đáp ứng:

  1. pinned_version được đặt thành một phiên bản cũ hợp lệ.
  2. allow_downgrades được đặt rõ ràng thành true.

Cách hoạt động của việc hạ cấp

  • Cơ chế kích hoạt: Các bản quay lại được xử lý trong chu kỳ kiểm tra bản cập nhật thông thường (chạy 4–6 giờ một lần).
  • Cơ chế hoạt động: Chrome thực hiện quy trình cài đặt lại hoàn toàn IWA bằng gói web cũ (.swbn) được chỉ định trong tệp kê khai cập nhật.

Logic chuyển tiếp kênh

Khi chuyển kênh mục tiêu của một ứng dụng bằng một chính sách, công cụ cập nhật sẽ tuân thủ các hành vi cụ thể:

Tình huống A: Chuyển sang một kênh có các phiên bản cũ hơn

  • Nếu được phép hạ cấp: Nếu pinned_version khớp với một phiên bản cũ hơn trên kênh mục tiêu và allow_downgrades là true, thì quá trình khôi phục sẽ diễn ra (và dữ liệu người dùng cục bộ sẽ bị xoá).
  • Nếu không được phép hạ cấp: Không có hoạt động hạ cấp nào xảy ra. Thiết bị sẽ vẫn ở phiên bản cao hơn hiện được cài đặt và chỉ cập nhật khi có phiên bản mới hơn trên kênh mới chọn.

Trường hợp B: Chuyển sang kênh có phiên bản trùng khớp

  • Không có thay đổi: Nếu kênh mới chọn trỏ đến một số phiên bản bằng với số phiên bản hiện được cài đặt, thì Chrome sẽ không sửa đổi gói đã cài đặt.
  • Nguyên tắc nhận dạng từng byte: Nhà phát triển phải đảm bảo rằng các số phiên bản giống hệt nhau trên nhiều kênh chứa các chữ ký mã giống hệt nhau, khớp từng byte. Việc triển khai các cơ sở mã khác nhau trong cùng một chuỗi phiên bản trên các kênh có thể dẫn đến các trạng thái ứng dụng không mong muốn và thất thường.

Cấu hình chính sách quản trị

Các chế độ kiểm soát phiên bản doanh nghiệp được thực thi bằng nền tảng Bảng điều khiển dành cho quản trị viên của Google tập trung bằng cách sử dụng giản đồ chính sách IsolatedWebAppInstallForceList. Bạn có thể quản lý trực tiếp các chế độ cài đặt này thông qua các chế độ kiểm soát giao diện người dùng trong Bảng điều khiển dành cho quản trị viên hoặc triển khai bằng cách sử dụng cấu hình chính sách JSON thô.
Ví dụ sau đây về cấu hình chính sách quản trị minh hoạ các kênh cập nhật, việc ghim phiên bản và hạ cấp:

Biểu diễn giá trị trong chính sách

[
  {
    "update_manifest_url": "https://awesome-kitchen-sink.glitch.me/update.json",
    "web_bundle_id": "aiv4bxauvcu3zvbu6r5yynoh4atkzqqaoeof5mwz54b4zfywcrjuoaacai",
    "channel": "beta",
    "pinned_version": "0.7.0",
    "allow_downgrades": true
  }
]

Giải thích về tham số giản đồ

  • channel (chuỗi, không bắt buộc): Hướng dẫn Chrome chỉ đánh giá các phiên bản được chỉ định cho kênh này trong tệp kê khai bản cập nhật. Nếu bạn bỏ qua, Chrome sẽ đánh giá kênh "default".
  • pinned_version (chuỗi, không bắt buộc): Khoá rõ ràng thiết bị theo chuỗi phiên bản đã chỉ định. Các bản cập nhật tự động tiếp theo ở chế độ nền sẽ bị chặn.
  • allow_downgrades (boolean, không bắt buộc): Bật khả năng khôi phục. Nếu bạn đặt chính sách này thành true và ghép nối với một pinned_version hợp lệ, cũ hơn, thì Chrome sẽ kích hoạt quá trình cài đặt lại phiên bản cũ. Cảnh báo: Việc đặt tham số này thành true sẽ chặn tất cả các bản cập nhật chuyển tiếp tiêu chuẩn ngay cả khi bạn bỏ qua trường pinned_version.

IWA không được quản lý (do người dùng cài đặt) (từ 150)

Đối với Ứng dụng web tách biệt do người dùng cài đặt và không được quản lý, việc tạo phiên bản sẽ hoạt động thông qua các lượt tương tác thủ công của người dùng:

Gói cài đặt ──► Người dùng chọn kênh ──► Tự động kiểm tra kênh đã chọn

Điều kiện tiên quyết về tệp kê khai để cập nhật tự động

Đối với các IWA do người dùng cài đặt để kiểm tra và nhận các bản cập nhật định kỳ tự động ở chế độ nền, Tệp kê khai ứng dụng web cục bộ của ứng dụng (siêu dữ liệu được đóng gói bên trong gói tại /.well-known/manifest.webmanifest) phải chứa một trường update_manifest_url hợp lệ.

Nếu bạn bỏ qua URL này trong tệp kê khai cục bộ của ứng dụng, thì công cụ cập nhật không được quản lý sẽ không bao giờ thực hiện các quy trình kiểm tra ở chế độ nền và ứng dụng sẽ luôn bị treo vĩnh viễn ở phiên bản cài đặt ban đầu.

Chọn kênh theo cách thủ công

Trong quá trình cài đặt ban đầu một IWA chưa được quản lý, trình duyệt sẽ kiểm tra tệp kê khai bản cập nhật và hiển thị các lựa chọn kênh hiện có (ví dụ: "Ổn định", "Beta") trực tiếp cho người dùng nếu nhà phát triển đã định cấu hình nhiều kênh.

Các quy tắc chính trong vòng đời

  1. Nguồn cài đặt lần đầu: Bất kể người dùng chọn kênh nào khi cài đặt, lần cài đặt ban đầu luôn triển khai các tệp được đóng gói bên trong gói cài đặt đã cung cấp.
  2. Các bản cập nhật tiếp theo: Sau khi cài đặt, các bản cập nhật trong tương lai sẽ chỉ được truy vấn từ kênh đã chọn. Ứng dụng sẽ chỉ cập nhật khi một phiên bản cao hơn phiên bản đã cài đặt được xuất bản lên kênh mục tiêu đó.
  3. Chuyển đổi kênh: Để chuyển sang một kênh cập nhật khác sau khi cài đặt, người dùng phải gỡ cài đặt IWA rồi cài đặt lại, chọn kênh đã chọn trong quy trình cài đặt.

Cách kiểm thử các hoạt động triển khai được quản lý

Đối với những quản trị viên quản lý thiết bị thông qua Bảng điều khiển dành cho quản trị viên của Chrome Enterprise hoặc định cấu hình trực tiếp các chính sách:

  1. Chuyển đến bảng Chi tiết ứng dụng trong phần cài đặt của tổ chức.
  2. Áp dụng các thuộc tính cấu hình để kiểm thử tính năng ghim và mục tiêu của kênh. Vì các chế độ kiểm soát này hoàn toàn tương thích với Phiên người dùng tiêu chuẩn, Phiên khách được quản lý (MGS) và Kiosk, nên bạn có thể xác minh hành vi trên tất cả các môi trường triển khai mục tiêu.
  3. Để kiểm tra các lượt kiểm tra bản cập nhật cục bộ, hãy chuyển đến chrome://web-app-internals trên một ứng dụng thử nghiệm để buộc kiểm tra bản cập nhật theo cách thủ công và phân tích các gói tệp kê khai đến.

Kết luận

Cấu trúc bảo mật của Các ứng dụng web tách biệt được thiết kế để hỗ trợ nhà phát triển trong khi vẫn duy trì khả năng dự đoán và kiểm soát nghiêm ngặt đối với các hành vi trong vòng đời của ứng dụng. Bằng cách tận dụng các tính năng quản lý phiên bản của Chrome, cả nhà phát triển và quản trị viên CNTT đều có thể xây dựng các quy trình triển khai mạnh mẽ phù hợp với các tiêu chuẩn tuân thủ nghiêm ngặt và mục tiêu hoạt động.

Khi thiết kế và quản lý chiến lược cập nhật của ứng dụng, hãy lưu ý những nguyên tắc cốt lõi sau:

  • Sử dụng các kênh tiến trình: Các kênh cập nhật (như beta, dev hoặc các vòng tuỳ chỉnh) cho phép bạn dần dần thu thập dữ liệu đo từ xa và ý kiến phản hồi. Điều này đảm bảo các bản cập nhật lớn phải trải qua quy trình xác minh nghiêm ngặt trước khi được phát hành cho người dùng thông thường trên kênh mặc định.
  • Ghim để ổn định: Trong các môi trường doanh nghiệp có cấu trúc cao hoặc tuân thủ quy định, hãy khoá các điểm cuối quan trọng vào một pinned_version chính xác đã được xác minh để bảo vệ các hoạt động khỏi những sự cố không mong muốn hoặc gián đoạn quy trình làm việc.
  • Dành các trường hợp hạ cấp cho trường hợp khẩn cấp: Nhận thấy rằng việc hạ cấp phiên bản là một van an toàn mạnh mẽ, có tính khắc phục mà trước đây không thể thực hiện được. Tuy nhiên, vì thao tác quay lại sẽ kích hoạt quá trình cài đặt lại hoàn toàn và xoá tất cả bộ nhớ cục bộ của ứng dụng (IndexedDB, LocalStorage, cookie), nên bạn chỉ được phép sử dụng thao tác này cho hoạt động khắc phục bảo mật quan trọng. Đối với các bản vá thông thường, việc triển khai một bản cập nhật nhỏ hướng đến tương lai luôn là chiến lược lý tưởng.
  • Hiểu rõ các cờ chính sách: Lưu ý đến các công tắc quản trị; việc bật allow_downgrades sẽ dừng tất cả các bản cập nhật tiếp theo ngay cả khi bạn không chủ động xác định một mã pin.
  • Thiết lập tính toàn vẹn từng byte: Đảm bảo rằng các số phiên bản giống nhau được triển khai trên nhiều kênh ánh xạ đến các gói giống hệt nhau, khớp theo byte để tránh trạng thái ứng dụng thất thường khi ứng dụng chuyển đổi giữa các kênh.

Bằng cách tích hợp các tính năng này trực tiếp vào Tệp kê khai bản cập nhật và giản đồ chính sách doanh nghiệp, bạn có thể đảm bảo quy trình cập nhật đáng tin cậy, có thể kiểm tra và an toàn, đồng thời duy trì các đảm bảo về độ tin cậy cao của hệ sinh thái Ứng dụng web tách biệt.