Như đã thông báo trong bài đăng trên blog ban đầu, Bazel 4.0 trở lên hỗ trợ 2 kênh phát hành: bản phát hành liên tục 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.
Phiên bản phát hành
Bazel sử dụng lược đồ Phiên bản ngữ nghĩa major.minor.patch Semantic Versioning.
- 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 là một bản phát hành LTS.
- Bản phát hành phụ chứa các bản sửa lỗi tương thích ngược và các tính năng được chuyển ngượ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 nghiêm 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ụ: bản phát hành mới của từng loại sẽ có các số phiên bản sau:
- Chính: 6.0.0
- Phụ: 6.1.0
- Bản vá: 6.1.2
- Phát hành trước: 7.0.0-pre.20230502.1
Giai đoạn hỗ trợ
Đối với mỗi phiên bản chính của Bazel, có 4 giai đoạn hỗ trợ:
- Liên tục: Phiên bản chính 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 liên tục từ HEAD.
- Đang hoạt động: Phiên bản chính này là bản phát hành LTS đang hoạt động. Nhóm Bazel chuyển ngượ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 phụ.
- Bảo trì: Phiên bản chính này là bản phát hành LTS cũ ở chế độ bảo trì. Nhóm Bazel chỉ hứa chuyển ngược các bản sửa lỗi nghiêm trọng đối với các vấn đề về bảo mật và khả năng tương thích với hệ điều hành vào bản phát hành LTS này.
- Không dùng nữa: Nhóm Bazel không còn hỗ trợ phiên bản chính này nữa, tất cả người dùng nên di chuyển sang các bản phát hành LTS mới hơn của Bazel.
Nhịp độ phát hành
Bazel thường xuyên phát hành các bản phát hành cho 2 kênh phát hành.
Bản phát hành liên tục
- Các bản phát hành liên tục đượ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 2 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.
- Các 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ác cờ không tương thích cho các thay đổi lớn 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 tương thích ngược của chúng tôi.
Bản phát hành LTS
- Bản phát hành chính: Dự kiến sẽ có một bản phát hành LTS mới được cắt từ HEAD khoảng 12 tháng một lần. Sau khi phát hành, bản phát hành LTS mới 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 phụ: Dự kiến sẽ có các phiên bản phụ mới trên kênh LTS Đang hoạt động được phát hành 2 tháng một lần.
- Bản phát hành bản vá: Dự kiến sẽ có các phiên bản bản vá mới cho các bản phát hành LTS ở giai đoạn Đang hoạt động và Bảo trì được phát hành theo yêu cầu để sửa các lỗi nghiêm trọng.
- Bản phát hành LTS của Bazel sẽ chuyển sang giai đoạn Không dùng nữa sau khi ở giai đoạn Bảo trì trong 2 năm.
Đối với các bản phát hành đã lên kế hoạch, vui lòng xem các vấn đề về bản phát hành trên GitHub.
Ma trận hỗ trợ
| Bản phát hành LTS | Giai đoạn hỗ trợ | Phiên bản mới nhất | Thời điểm ngừng hỗ trợ |
|---|---|---|---|
| Bazel 7 | Liên tục | Kiểm tra trang phát hành trên GitHub | Không áp dụng |
| Bazel 6 | Đang hoạt động | 6.4.0 | Tháng 12 năm 2025 |
| Bazel 5 | Bảo trì | 5.4.1 | Tháng 1 năm 2025 |
| Bazel 4 | 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 của 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 liên tục, quy trình này rất đơn giản: khoảng 2 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 Blaze nội bộ của Google. Do lịch phát hành nhanh chóng, chúng tôi không chuyển ngược bất kỳ thay đổi nào vào các bản phát hành liên tục.
Đối với các bản phát hành LTS, chúng tôi tuân theo quy trình và chính sách bên dưới:
- Xác định một cam kết cơ sở cho bản phát hành.
- Đối với bản phát hành LTS chính mới, cam kết cơ sở là HEAD của nhánh chính.
- Đối với bản phát hành phụ hoặc bản vá, cam kết cơ sở là HEAD 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.
- Tạo một nhánh phát hành có tên là
release-<version>từ cam kết cơ sở. - Chuyển ngược các thay đổi thông qua PR vào nhánh phát hành.
- Cộng đồng có thể đề xuất chuyển ngược một số cam kết bằng cách trả lời "
@bazel-io flag" trên các vấn đề hoặc PR có liên quan trên GitHub để đánh dấu các cam kết đó là các yếu tố tiềm ẩn gây chặn bản phát hành. Nhóm Bazel sẽ phân loại các cam kết đó và quyết định có chuyển ngược các cam kết đó hay không. - Chỉ các cam kết tương thích ngược trên nhánh chính mới có thể được chuyển ngược. Bạn có thể thực hiện các thay đổi nhỏ khác để giải quyết xung đột hợp nhất.
- Cộng đồng có thể đề xuất chuyển ngược một số cam kết bằng cách trả lời "
- Xác định các yếu tố gây chặn bản phát hành và khắc phục các vấn đề được phát hiện trên nhánh phát hành.
- Nhánh phát hành được kiểm thử bằng cùng một bộ thử nghiệm trong postsubmit và quy 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 được phát hiện.
- Tạo một bản phát hành dùng thử mới từ nhánh phát hành khi tất cả các yếu tố gây chặn bản phát hành đã biết đều đượ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 của cộng đồng đối với bản phát hành dùng thử.
- Nếu bạn xác định được các yếu tố gây chặn bả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 tất cả các vấn đề.
- Bạn không được thêm các 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.
- Đẩ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 yếu tố gây 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 2 ngày làm việc sau khi bản phát hành dùng thử cuối cùng được phát hành.
- Đối với các bản phát hành chính và phụ, hãy đẩy bản phát hành 2 ngày làm việc sau khi bản phát hành dùng thử cuối cùng được phát hành, nhưng không sớm hơn 1 tuần sau khi bản phát hành dùng thử đầu tiên được phát hành.
- Bản phát hành chỉ được đẩy vào ngày mà ngày tiếp theo là ngày làm việc.
- Bản phát hành được thông báo trên bazel-discuss, nhóm Bazel theo dõi và giải quyết các báo cáo lỗi của cộng đồng đối với bản phát hành mới.
Báo cáo lỗi hồi quy
Nếu người dùng phát hiện thấy lỗi hồi quy trong bản phát hành mới của Bazel, bản phát hành dùng thử hoặc thậm chí Bazel tại HEAD, vui lòng báo cáo lỗi trên GitHub. Bạn có thể sử dụng Bazelisk để phân tích cam kết gây lỗi 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 của 6.2.0, bạn có thể phân tích 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 thiết để tái tạo vấn đề. Để biết thêm thông tin, hãy xem tài liệu về tính năng phân tích của Bazelisk
bisect feature.
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 phân tích.
Khả năng tương thích của 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 các phiên bản Bazel khác nhau, vui lòng xem trang Khả năng tương thích của quy tắc.