Tại sao lại là Bazel?

Báo cáo sự cố Xem nguồn

Bazel là một công cụ xây dựng nhanh, chính xáccó thể mở rộng với tính năng kiểm thử tích hợp, hỗ trợ nhiều ngôn ngữ, kho lưu trữnền tảng trong một hệ sinh thái hàng đầu trong ngành.

Bazel chạy nhanh

Bazel biết chính xác những tệp đầu vào mà mỗi lệnh bản dựng cần có, tránh các công việc không cần thiết bằng cách chỉ chạy lại khi tập hợp các tệp đầu vào đã thay đổi giữa mỗi bản dựng. Trình phân tích cú pháp chạy các lệnh tạo bản dựng với nhiều chế độ song song nhất có thể, trong cùng một máy tính hoặc trên các nút bản dựng từ xa. Nếu cấu trúc của bản dựng cho phép, nó có thể chạy hàng nghìn lệnh tạo hoặc kiểm thử cùng một lúc.

Tính năng 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 vào bộ nhớ đệm ở phía bắc là 99%.

Tiếng Bazel chính xác

Bazel đảm bảo rằng các tệp nhị phâ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ẻ, còn 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 bản dựng khi cần. Việc này giúp tệp nhị phân của bạn luôn cập nhật để cùng một mã nguồn luôn dẫn đến cùng một tệp nhị phân, từng bit một.

Nói Goodbyte để gọi make clean vô tận và đuổi các lỗi ảo mà thực tế đã được phân giải trong mã nguồn chưa từng được tạo.

Bazel có thể mở rộng

Khai thác tối đa 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 theo nhu cầu cụ thể trong 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 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 dễ dàng viết quy tắc, đồng thời tạo ra các quy tắc có thể 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 biết và chỉ chạy các 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 sớm các thành phần không phù hợp bằng cách sử dụng phương thức thực thi từ xa để nhanh chóng chạy kiểm thử hàng nghìn lần.

Bazel cung cấp các phương tiện để tải kết quả kiểm thử lên một vị trí trung tâm, từ đó tạo điều kiện cho việc trao đổi kết quả kiểm thử một cách hiệu quả, dù là trên CI hay từng 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 dành cho thiết bị di động) trong cùng một lệnh gọi Bazel mà không bị hạn chế ở công cụ xây dựng 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 cung cấp các phần phụ thuộc (nhưng có thể làm vậy), 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 tạo sẵn (ví dụ: kho lưu trữ git hoặc Maven Central) để xử lý phần còn lại.

Hỗ trợ nhiều nền tảng

Bazel có thể cùng lúc xây dựng các dự án cho nhiều nền tảng, bao gồm cả Linux, macOS, Windows và Android. Thư viện 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 đa dạng

Các nhà lãnh đạo trong ngành yêu thích Bazel vì đã xây dựng được một cộng đồng lớn gồm các nhà phát triển sử dụng và đóng góp cho Bazel. Tìm một công cụ, dịch vụ và tài liệu, bao gồm cả dịch vụ tư vấn và các dịch vụ SaaS mà Bazel có thể sử dụng. Khám phá các tiện ích như tính năng 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.