Như đã thông báo trong bài đăng gốc trên blog, Bazel 4.0 và các phiên bản cao hơn hỗ trợ hai kênh phát hành: bản phát hành cuốn chiếu và bản phát hành hỗ trợ dài hạn (LTS). Trang này trình bày thông tin mới nhất về mô hình phát hành của Bazel.
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 | Ngừng hỗ trợ |
|---|---|---|---|
| Bazel 10 | Tuyển sinh không có kỳ hạn | Kiểm tra trang phát hành cuốn chiếu | Không áp dụng |
| Bazel 9 | Đang hoạt động | 9.3.1 | Tháng 12 năm 2028 |
| Bazel 8 | Đang bảo trì | 8.8.2 | Tháng 12 năm 2027 |
| Bazel 7 | Đang bảo trì | 7.7.2 | Tháng 12 năm 2026 |
| Bazel 6 | Không được dùng nữa | 6.6.0 | Tháng 12 năm 2025 |
| Bazel 5 | Không được dùng nữa | 5.4.1 | Tháng 1 năm 2025 |
| Bazel 4 | Không được dùng nữa | 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 LTS trên trang phát hành trên GitHub. Huy hiệu "Mới nhất" trên GitHub luôn trỏ đến phiên bản ngữ nghĩa cao nhất, ngay cả khi bản vá bảo trì cho phiên bản cũ được phát hành gần đây hơn.
Tạo phiên bản phát hành
Bazel sử dụng lược đồ Định nghĩa 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 Bazel chính là một bản phát hành LTS.
- Bản phát hành nhỏ 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 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ẽ có các số phiên bản sau:
- Chính: 6.0.0
- Phiên bản nhỏ: 6.1.0
- Bản vá: 6.1.2
- Bản phát hành trước: 7.0.0-pre.20230502.1
Các giai đoạn hỗ trợ
Đối với mỗi phiên bản Bazel chính, có 4 giai đoạn hỗ trợ:
- Phát hành cuốn chiếu: Phiên bản lớn này vẫn đang trong giai đoạn bản phát hành trước, nhóm Bazel sẽ phát hành các bản phát hành cuốn chiếu từ HEAD.
- Đang hoạt động: Phiên bản lớn này là bản phát hành LTS đang hoạt động hiện tại. Nhóm Bazel sẽ đưa 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ỉ cam kết sẽ đưa các bản sửa lỗi nghiêm trọng cho các vấn đề bảo mật và vấn đề 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.
Tần suất phát hành
Bazel thường xuyên phát hành các bản phát hành cho hai kênh phát hành.
Bản phát hành cuốn chiếu
- Các bản phát hành cuốn chiếu được điều phối theo 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 Bazel LTS tiếp theo.
- Bản phát hành cuốn chiếu có thể cung cấp 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 những 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
- Bản phát hành chính: Bản phát hành LTS mới dự kiến sẽ được cắt từ 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.
- Bản vá: Các phiên bản vá mới cho 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 để sửa các lỗi nghiêm trọng.
- Bản phát hành Bazel LTS sẽ chuyển sang giai đoạn Ngừng hoạt động sau khi ở giai đoạn Bảo trì trong 2 năm.
Để biết 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 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 cuốn chiếu, 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 một 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 tôi không chuyển bất kỳ thay đổi nào về phiên bản trước cho các bản phát hành định kỳ.
Đối với các bản phát hành LTS, chúng tôi tuân thủ quy trình và chính sách sau:
- Xác định một thay đổi 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 nhỏ 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ở. - Đưa các thay đổi về phiên bản cũ thông qua PR vào nhánh phát hành.
- Cộng đồng có thể đề xuất một số cam kết nhất định sẽ được chuyển về 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 chúng là tiềm năng trình chặn phát hành, nhóm Bazel sẽ phân loại chúng và quyết định xem có nên back-port các cam kết. - Chỉ có thể chuyển các thay đổi tương thích ngược trên nhánh chính, các thay đổi nhỏ khác để giải quyết xung đột hợp nhất đều được chấp nhận.
- Cộng đồng có thể đề xuất một số cam kết nhất định sẽ được chuyển về bằng cách trả lời
"
Đưa các thay đổi về phiên bản cũ bằng cách sử dụng Vấn đề về yêu cầu chọn lọc cho người bảo trì Bazel.
Người bảo trì Bazel có thể yêu cầu chọn lọc(các) cam kết cụ thể vào một nhánh phát hành. Quy trình này bắt đầu bằng việc tạo một yêu cầu chọn lọc trên GitHub. Sau đây là cách thực hiện.
- Mở yêu cầu chọn lọc
- Điền thông tin chi tiết về yêu cầu
- Tiêu đề: Cung cấp tiêu đề ngắn gọn và mang tính mô tả cho yêu cầu.
- (Các) mã cam kết: Nhập (các) mã cam kết mà bạn muốn chọn. Nếu có nhiều thay đổi, hãy phân tách các thay đổi đó bằng dấu phẩy.
- Danh mục: Chỉ định danh mục của yêu cầu.
- Người đánh giá: Đối với nhiều người đánh giá, hãy phân tách mã nhận dạng GitHub của họ bằng dấu phẩy.
- Đặt mốc quan trọng
- Tìm mục "Cột mốc" rồi nhấp vào chế độ cài đặt này.
- Chọn các vấn đề chặn bản phát hành X.Y.Z thích hợp. Thao tác này sẽ kích hoạt bot chọn lọc để xử lý yêu cầu của bạn cho nhánh "release-X.Y.Z".
- Gửi vấn đề
- Sau khi điền tất cả thông tin chi tiết và đặt mốc quan trọng, hãy gửi vấn đề.
Bot cherry-pick sẽ xử lý yêu cầu và thông báo nếu(các) thay đổi đủ điều kiện để cherry-pick. Nếu các thay đổi có thể được chọn lọc, tức là không có xung đột hợp nhất trong khi chọn lọc thay đổi, thì bot sẽ tạo một yêu cầu kéo mới. Khi yêu cầu lấy được một thành viên của nhóm Bazel phê duyệt, các thay đổi sẽ được chọn lọc và hợp nhất vào nhánh phát hành. Để xem ví dụ trực quan về một yêu cầu chọn lọc đã hoàn tất, hãy tham khảo ví dụ này.
Xác định các yếu tố chặn bả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ử bằng cùng một bộ kiểm thử 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 tìm thấy.
Tạo bản phát hành dùng thử mới từ nhánh phát hành khi tất cả các vấn đề đã biết gây cản trở việc phát hành đều được giải quyết.
- Bản phát hành dùng thử được công bố trên bazel-discuss, nhóm Bazel theo dõi các báo cáo lỗi của cộng đồng về bản phát hành dùng thử.
- Nếu xác định được các vấn đề mới gây cản trở việc phát hành, 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ả vấ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; chỉ được phép chọn lọc các bản sửa lỗi quan trọng. Nếu cần chọn lọc, người yêu cầu phải trả lời các câu hỏi sau: Tại sao thay đổi này lại quan trọng và mang lại lợi ích gì? Khả năng thay đổi này gây ra lỗi hồi quy là bao nhiêu?
Đẩ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 vấn đề nào khác gây cản trở việc phát hành
- Đối với các bản phát hành bản vá, hãy 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 đây nhất được phát hành.
- Đối với các bản phát hành chính và phụ, hãy phát hành hai ngày làm việc sau khi bản phát hành dùng thử cuối cùng ra mắt, nhưng không sớm hơn một tuần sau khi bản phát hành dùng thử đầu tiên ra mắt.
- 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 giám sát và giải quyết 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 phát hiện thấy lỗi hồi quy trong 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 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 chia các thay đổi gây ra 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, thì bạn có thể thực hiện phân đô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 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 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.