Mô hình phát hành

Báo cáo vấn đề Xem nguồn

Như đã thông báo trong bài đăng gốc trên blog, Bazel 4.0 trở lên hỗ trợ 2 kênh phát hành: bản phát hành luân phiên và bản phát hành hỗ trợ dài hạn (LTS). Trang này cung cấp thông tin mới nhất về mô hình phát hành của Bazel.

Tạo phiên bản phát hành

Bazel sử dụng lược đồ Tạo phiên bản ngữ nghĩa major.minor.patch.

  • Một bản phát hành chính chứa các tính năng không tương thích ngược với bản phát hành trước đó. Mỗi phiên bản Bazel chính là một bản phát hành LTS (hỗ trợ dài hạn).
  • Một bản phát hành nhỏ chứa các bản sửa lỗi có khả năng tương thích ngược và các tính năng được điều chỉnh cho phiên bản cũ từ nhánh chính.
  • Bản phát hành bản vá chứa các bản sửa lỗi quan trọng.

Ngoài ra, các phiên bản phát hành trước được biểu thị bằng cách thêm dấu gạch nối và hậu tố ngày vào số phiên bản chính tiếp theo.

Ví dụ: một bản phát hành mới của mỗi loại sẽ dẫn đến số phiên bản sau:

  • Lớn: 6.0.0
  • Ít: 6.1.0
  • Bản vá: 6.1.2
  • Trước khi phát hành: 7.0.0-pre.20230502.1

Các cấp độ hỗ trợ

Mỗi phiên bản Bazel chính, có 4 giai đoạn hỗ trợ:

  • Rolling (Phát hành chính thức): Phiên bản lớn này vẫn đang ở giai đoạn phát hành trước, nhóm Bazel sẽ phát hành các bản phát hành luân phiên từ HEAD.
  • Đang hoạt động: Phiên bản chính này là bản phát hành LTS (hỗ trợ dài hạn) hiện đang hoạt động. Nhóm Bazel điều chỉnh cho phiên bản cũ các tính năng quan trọng và bản sửa lỗi vào các bản phát hành nhỏ.
  • Bảo trì: Phiên bản lớn này là một bản phát hành LTS cũ ở chế độ bảo trì. Nhóm Bazel chỉ hứa hẹn sẽ điều chỉnh cho phiên bản LTS phiên bản cũ các bản sửa lỗi quan trọng đối với vấn đề bảo mật và khả năng tương thích với hệ điều hành.
  • Không dùng nữa: Nhóm Bazel không còn hỗ trợ cho phiên bản lớn này nữa. Tất cả người dùng nên chuyển sang các bản phát hành Bazel LTS mới hơn.

Tần suất phát hành

Bazel thường xuyên ra mắt bản phát hành cho 2 kênh phát hành.

Bản phát hành chính thức

  • Các bản phát hành ra mắt được phối hợp với bản phát hành Google Blaze và được phát hành từ HEAD khoảng hai tuần một lần. Đây là bản xem trước của bản phát hành LTS tiếp theo của Bazel.
  • Bản phát hành rộng rãi có thể gửi những thay đổi không tương thích. Bạn nên sử dụng cờ không tương thích cho những thay đổi lớn có thể gây lỗi. Việc triển khai các thay đổi không tương thích phải tuân theo chính sách về khả năng tương thích ngược của chúng tôi.

Bản phát hành LTS (hỗ trợ dài hạn)

  • Bản phát hành chính: Bản phát hành LTS mới dự kiến sẽ bị cắt bớt khỏi HEAD khoảng 12 tháng một lần. Sau khi ra mắt, bản phát hành LTS mới sẽ ngay lập tức chuyển sang giai đoạn Hoạt động và bản phát hành LTS trước đó sẽ chuyển sang giai đoạn Bảo trì.
  • Bản phát hành nhỏ: Các phiên bản nhỏ mới trên kênh LTS đang hoạt động dự kiến sẽ được phát hành 2 tháng một lần.
  • Phát hành bản vá: Chúng tôi dự kiến sẽ phát hành các phiên bản bản vá mới cho các bản phát hành LTS ở giai đoạn Hoạt động và Bảo trì theo yêu cầu đối với các bản sửa lỗi quan trọng.
  • Bản phát hành Bazel LTS sẽ chuyển sang giai đoạn Không dùng nữa sau khi ở giai đoạn Bảo trì được 2 năm.

Đối với các bản phát hành theo kế hoạch, vui lòng xem vấn đề về bản phát hành của chúng tôi trên GitHub.

Ma trận hỗ trợ

Bản phát hành LTS (hỗ trợ dài hạn) Giai đoạn hỗ trợ Phiên bản mới nhất Kết thúc hỗ trợ
Bazel 7 Không có kỳ hạn Kiểm tra trang phát hành GitHub Không áp dụng
Bazel 6 Đang hoạt động 6.4.0 Tháng 12 năm 2025
Bazel 5 Đang bảo trì 5.4.1 Tháng 1 năm 2025
Bazel 4 Đang bảo trì 4.2.4 Tháng 1 năm 2024

Bạn có thể tìm thấy tất cả bản phát hành Bazel trên trang phát hành trên GitHub.

Chính sách và quy trình phát hành

Đối với các bản phát hành luân phiên, quy trình này rất đơn giản: cứ khoảng hai tuần một lần, một bản phát hành mới sẽ được tạo, phù hợp với cùng đường cơ sở như bản phát hành ứng dụng nội bộ của Google. Do lịch phát hành nhanh, nên chúng tôi không điều chỉnh cho phiên bản cũ bất kỳ thay đổi nào đối với bản phát hành định kỳ.

Đối với bản phát hành LTS, quy trình và chính sách dưới đây được tuân thủ:

  1. Xác định cam kết cơ sở cho bản phát hành.
    • Đối với một bản phát hành LTS chính mới, lệnh xác nhận cơ sở là ĐẦU của nhánh chính.
    • Đối với một bản phát hành nhỏ hoặc bản vá, lệnh xác nhận cơ sở là TIÊU CHUẨN của phiên bản mới nhất hiện tại của cùng một bản phát hành LTS (hỗ trợ dài hạn).
  2. Tạo một nhánh phát hành mang tên release-<version> từ cam kết cơ sở.
  3. Điều chỉnh cho phiên bản cũ thông qua PR đối với nhánh phát hành.
    • Cộng đồng có thể đề xuất một số cam kết được điều chỉnh cho phiên bản cũ bằng cách trả lời "@bazel-io flag" về các vấn đề có liên quan trên GitHub hoặc PR để đánh dấu những cam kết đó là trình chặn phát hành tiềm năng. Nhóm Bazel sẽ phân loại các cam kết đó và quyết định xem có chuyển lại các cam kết đó hay không.
    • Chỉ các thay đổi có khả năng tương thích ngược trên nhánh chính mới được điều chỉnh cho phiên bản cũ, bạn có thể điều chỉnh thêm một số thay đổi nhỏ để giải quyết xung đột hợp nhất.
  4. Xác định các trình chặn phát hành và khắc phục các vấn đề phát hiện được trên nhánh phát hành.
    • Nhánh phát hành được kiểm thử với cùng một bộ kiểm thử trong postsubmitquy trình kiểm thử hạ nguồn trên Bazel CI. Nhóm Bazel theo dõi kết quả kiểm thử của nhánh phát hành và khắc phục mọi lỗi hồi quy phát hiện được.
  5. Tạo một đề xuất phát hành mới từ nhánh phát hành khi tất cả các trình chặn phát hành đã biết đã được giải quyết.
    • Bản phát hành dùng thử được thông báo trên bazel-discuss, nhóm Bazel theo dõi các báo cáo lỗi trong cộng đồng cho ứng viên đó.
    • Nếu xác định được trình chặn phát hành mới, hãy quay lại bước cuối cùng và tạo một bản phát hành dùng thử mới sau khi giải quyết xong mọi vấn đề.
    • Bạn không được phép thêm tính năng mới vào nhánh phát hành sau khi tạo bản phát hành dùng thử đầu tiên.
  6. Đẩy bản phát hành dùng thử làm bản phát hành chính thức nếu không tìm thấy thêm trình chặn bản phát hành nào
    • Đối với các bản phát hành của bản vá, hãy ra mắt bản phát hành đó ít nhất 2 ngày làm việc sau khi bản thử nghiệm cuối cùng được phát hành.
    • Đối với các bản phát hành lớn và nhỏ, hãy đẩy bản phát hành ra sau 2 ngày làm việc kể từ khi bản phát hành cuối cùng được phát hành, nhưng không được sớm hơn 1 tuần sau khi bản phát hành đầu tiên ra mắt.
    • Bản phát hành chỉ được đẩy vào một ngày mà ngày tiếp theo là ngày làm việc.
    • Bản phát hành này được công bố trên bazel-discuss. Nhóm Bazel sẽ theo dõi và xử lý các báo cáo lỗi trong cộng đồng cho bản phát hành mới này.

Báo cáo số lần hồi quy

Nếu người dùng nhận thấy sự hồi quy trong một bản phát hành Bazel mới, bản phát hành dùng thử hoặc thậm chí là Bazel ở HEAD, vui lòng báo cáo lỗi trên GitHub. Bạn có thể sử dụng Bazelisk để chia đôi xác nhận thủ phạm và đưa thông tin này vào báo cáo lỗi.

Ví dụ: nếu bản dựng của bạn thành công với Bazel 6.1.0 nhưng không thành công với bản phát hành thứ hai là 6.2.0, bạn có thể chia đôi thông qua

bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar

Bạn có thể đặt biến môi trường BAZELISK_SHUTDOWN hoặc BAZELISK_CLEAN để chạy các lệnh bazel tương ứng nhằm đặt lại trạng thái bản dựng nếu cần tái hiện vấn đề. Để biết thêm thông tin, hãy xem tài liệu về tính năng chia đôi Bazelisk.

Hãy nhớ nâng cấp Bazelisk lên phiên bản mới nhất để sử dụng tính năng chia đôi.

Khả năng tương thích với quy tắc

Nếu bạn là tác giả quy tắc và muốn duy trì khả năng tương thích với nhiều phiên bản Bazel, vui lòng xem trang Khả năng tương thích quy tắc.