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.
Phát hành phiên bản
Bazel sử dụng lược đồ Tạo phiên bản ngữ nghĩa major.minor.patch.
- 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 chính của Bazel đều là một bản phát hành LTS (hỗ trợ dài hạn).
- Bản phát hành nhỏ chứa các bản sửa lỗi và tính năng có khả năng tương thích ngược được điều chỉnh ngược từ nhánh main.
- 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 các số phiên bản sau:
- Chính: 6.0.0
- Nhỏ: 6.1.0
- Bản vá: 6.1.2
- Trước khi phát hành: 7.0.0-pre.20230502.1
Các giai đoạn hỗ trợ
Đối với mỗi phiên bản chính của Bazel, sẽ có 4 giai đoạn hỗ trợ:
- Phát hành: Phiên bản lớn này vẫn đang ở giai đoạn phát hành trước, nhóm Bazel 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 các tính năng quan trọng và bản sửa lỗi cho 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ẽ đưa các bản sửa lỗi nghiêm trọng vào bản phát hành LTS (hỗ trợ dài hạn) này cho phiên bản cũ về các vấn đề bảo mật và vấn đề về khả năng tương thích hệ điều hành.
- Ngừng sử dụng: Nhóm Bazel không còn hỗ trợ phiên bản lớn này, tất cả người dùng nên chuyển sang bản phát hành LTS mới hơn của Bazel.
Tần suất phát hành
Bazel thường xuyên phát hành hai kênh phát hành.
Bản phát hành liên tục
- Các bản phát hành định kỳ đượ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 liên tục có thể gửi các thay đổi không tương thích. Bạn nên sử dụng cờ không tương thích cho các thay đổi có thể gây lỗi lớn. 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ỏ khỏi HEAD khoảng 12 tháng một lần. Sau khi bản phát hành LTS mới được phát hành, bản phát hành đó sẽ ngay lập tức chuyển sang giai đoạn Đang 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á: Các phiên bản bản vá mới cho các bản phát hành LTS trong giai đoạn Hoạt động và Bảo trì dự kiến sẽ được phát hành 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 LTS (hỗ trợ dài hạn) của Bazel sẽ chuyển sang giai đoạn Ngừng sử dụng sau khi ở giai đoạn Bảo trì trong 2 năm.
Đối với các bản phát hành dự kiến, vui lòng xem các 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ả các bản phát hành Bazel trên trang phát hành trên GitHub.
Quy trình và chính sách 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: 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 một đường cơ sở như bản phát hành Bluetooth nội bộ của Google. Do lịch phát hành nhanh, 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 các bản phát hành mới cập nhật.
Đối với các bản phát hành LTS, hãy tuân theo quy trình và chính sách dưới đây:
- Xác định một cam kết cơ sở cho bản phát hành.
- Đối với một bản phát hành LTS (hỗ trợ dài hạn) mới, cam kết cơ sở là HEAD của nhánh chính.
- Đối với bản phát hành nhỏ hoặc bản vá, cam kết cơ sở là đầu 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).
- Tạo một nhánh phát hành dưới tên
release-<version>
từ cam kết cơ sở. - Điều chỉnh cho phiên bản cũ các thay đổi thông qua PR đối với nhánh phát hành.
- Cộng đồng có thể đề xuất một số thay đổi nhất định được điều chỉnh lại bằng cách trả lời "
@bazel-io flag
" về các vấn đề hoặc PR có liên quan trên GitHub để đánh dấu các thay đổi đó là có thể chặn bản phát hành. Nhóm Bazel sẽ phân loại các thay đổi đó và quyết định xem có điều chỉnh lại các thay đổi đó hay không. - Chỉ các thay đổi tương thích ngược trên nhánh main mới có thể được điều chỉnh ngược dòng, các thay đổi nhỏ bổ sung để giải quyết xung đột hợp nhất được chấp nhận.
- Cộng đồng có thể đề xuất một số thay đổi nhất định được điều chỉnh lại bằng cách trả lời "
- Xác định trình chặn phát hành và khắc phục các vấn đề được tìm thấy trên nhánh phát hành.
- Nhánh bản phát hành được kiểm thử bằng cùng một bộ thử nghiệm trong postsubmit và quy trình thử nghiệm 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.
- Tạo một bản phát hành dùng thử mới từ nhánh phát hành khi bạn đã giải quyết xong tất cả các trình chặn bản phát hành đã biết.
- Bản phát hành dùng thử được công bố vào mục bazel-thảo luận, nhóm Bazel sẽ giám sát các báo cáo lỗi của cộng đồng cho ứng viên đó.
- Nếu xác định được trình chặn bản phát hành mới, hãy quay lại bước cuối cùng và tạo bản phát hành dùng thử mới sau khi giải quyết xong mọi vấn đề.
- Các tính năng mới không được phép thêm vào nhánh phát hành sau khi tạo bản phát hành dùng thử đầu tiên.
- Chuyển bản phát hành dùng thử dưới dạng 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 bản vá, hãy đẩy bản phát hành ít nhất hai ngày làm việc sau khi bản phát hành dùng thử gần nhất được ra mắt.
- Đối với các bản phát hành lớn và nhỏ, hãy đẩy 2 ngày làm việc sau khi bản phát hành dùng thử gần đây nhất được phát hành, nhưng không sớm hơn 1 tuần sau khi bản phát hành đầu tiên được ra mắt.
- Bản phát hành chỉ được gửi vào ngày mà ngày tiếp theo là ngày làm việc.
- Bản phát hành được công bố vào mục bazel-thảo luận, nhóm Bazel sẽ giám sát và xử lý các báo cáo lỗi của cộng đồng cho bản phát hành mới.
Báo cáo hồi quy
Nếu người dùng tìm thấy phiên bản 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 cam kết 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 dùng thử thứ hai là 6.2.0, bạn có thể chia đôi 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 sự cố. Để biết thêm thông tin chi tiết, vui lòng xem tài liệu về tính năng chia đôi của 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 với quy tắc.