Bazel là một công cụ xây dựng nhanh, chính xác và có khả năng mở rộng với hoạt động kiểm thử tích hợp, hỗ trợ nhiều ngôn ngữ, kho lưu trữ và nền tảng trong một hệ sinh thái hàng đầu trong ngành.
Bazel có tốc độ nhanh
Bazel biết chính xác những tệp đầu vào mà mỗi lệnh tạo bản dựng cần, tránh những công việc không cần thiết bằng cách chỉ chạy lại khi tập hợp tệp đầu vào đã thay đổi giữa mỗi bản dựng. Công cụ này chạy các lệnh tạo với mức độ song song cao nhất có thể, trong cùng một máy tính hoặc trên các nút tạo từ xa. Nếu cấu trúc của bản dựng cho phép, thì bản dựng có thể chạy hàng nghìn lệnh kiểm thử hoặc bản dựng cùng một lúc.
Việc này được hỗ trợ bởi nhiều lớp lưu vào bộ nhớ đệm, trong bộ nhớ, trên ổ đĩa và trên trang trại bản dựng từ xa (nếu có). Tại Google, chúng tôi thường xuyên đạt được tỷ lệ truy cập bộ nhớ đệm trên 99%.
Bazel là chính xác
Bazel đảm bảo rằng các tệp nhị phân của bạn chỉ được tạo từ mã nguồn của riêng bạn. Các thao tác Bazel chạy trong các hộp cát riêng lẻ và Bazel theo dõi mọi tệp đầu vào của bản dựng, chỉ và luôn chạy lại các lệnh xây dựng khi cần. Điều này giúp các tệp nhị phân của bạn luôn được cập nhật để cùng một mã nguồn luôn tạo ra cùng một tệp nhị phân, từng bit một.
Nói lời tạm biệt với vô số lệnh gọi make clean
và việc theo đuổi các lỗi ảo thực tế đã được giải quyết trong mã nguồn chưa bao giờ được tạo.
Bazel có thể mở rộng
Khai thác toàn bộ sức mạnh của Bazel bằng cách viết các quy tắc và macro của riêng bạn để tuỳ chỉnh Bazel cho các nhu cầu cụ thể của bạn trên nhiều dự án.
Các quy tắc Bazel được viết bằng Starlark, ngôn ngữ lập trình nội bộ của chúng tôi và là một tập hợp con của Python. Starlark giúp hầu hết các nhà phát triển có thể viết quy tắc, đồng thời tạo ra các quy tắc có thể được sử dụng trên toàn hệ sinh thái.
Kiểm thử tích hợp
Trình chạy kiểm thử tích hợp của Bazel chỉ biết và chạy những kiểm thử cần chạy lại, bằng cách sử dụng tính năng thực thi từ xa (nếu có) để chạy song song các kiểm thử đó. Phát hiện các lỗi không ổn định từ sớm bằng cách sử dụng tính năng thực thi từ xa để nhanh chóng chạy một thử nghiệm hàng nghìn lần.
Bazel cung cấp các cơ sở để tải kết quả kiểm thử lên một vị trí trung tâm, nhờ đó tạo điều kiện cho việc truyền đạt hiệu quả kết quả kiểm thử, cho dù là trên CI hay do các nhà phát triển riêng lẻ.
Hỗ trợ đa ngôn ngữ
Bazel hỗ trợ nhiều ngôn ngữ lập trình phổ biến, bao gồm C++, Java, Kotlin, Python, Go và Rust. Bạn có thể tạo nhiều tệp nhị phân (ví dụ: phần phụ trợ, giao diện người dùng web và ứng dụng di động) trong cùng một lệnh gọi Bazel mà không bị giới hạn ở công cụ tạo theo thành ngữ của một ngôn ngữ.
Hỗ trợ nhiều kho lưu trữ
Bazel có thể thu thập mã nguồn từ nhiều vị trí: bạn không cần phải cung cấp các phần phụ thuộc (nhưng bạn có thể!), thay vào đó, bạn có thể trỏ Bazel đến vị trí của mã nguồn hoặc các cấu phần phần mềm được tạo sẵn (ví dụ: kho lưu trữ git hoặc Maven Central), và Bazel sẽ xử lý phần còn lại.
Hỗ trợ nhiều nền tảng
Bazel có thể đồng thời tạo các dự án cho nhiều nền tảng, bao gồm Linux, macOS, Windows và Android. Công cụ này cũng cung cấp khả năng biên dịch chéo mạnh mẽ để tạo mã cho một nền tảng trong khi chạy bản dựng trên một nền tảng khác.
Hệ sinh thái rộng lớn
Các nhà lãnh đạo trong ngành yêu thích Bazel, xây dựng một cộng đồng lớn gồm những nhà phát triển sử dụng và đóng góp cho Bazel. Tìm các công cụ, dịch vụ và tài liệu, bao gồm cả các dịch vụ tư vấn và SaaS mà Bazel có thể sử dụng. Khám phá các tiện ích như hỗ trợ ngôn ngữ lập trình trong kho lưu trữ phần mềm nguồn mở của chúng tôi.