Tại sao lại là Bazel?

Báo cáo vấn đề Xem nguồn Hằng đêm · 7,3 · 7,2 · 7.1 · 7 · 6,5

Bazel có tốc độ nhanh, chính xácdễ mở rộng công cụ xây dựng có 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 đầu ngành.

Bazel rất nhanh

Bazel biết chính xác tệp đầu vào nào mà mỗi lệnh bản dựng cần, để tránh 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. Công cụ này chạy các lệnh bản dựng với mức độ song song nhiều nhất có thể, trong cùng một máy tính hoặc trên 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 bản dựng hoặc lệnh kiểm thử cùng một lúc.

Điều 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 xây 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 chiếm 99%.

Bazel đã đúng

Bazel đảm bảo rằng các tệp nhị phân của bạn chỉ được tạo từ tệp nhị phân của riêng bạn mã nguồn. Các thao tác Bazel chạy trong từng hộp cát và các bản nhạc Bazel mọi tệp đầu vào của bản dựng, chỉ và luôn chạy lại bản dựng các lệnh khi cần. Thao tác này sẽ 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 dẫn đến cùng một tệp nhị phân, bit từng chút một.

Nói Goodbyte với những lệnh gọi make clean bất tận và đuổi theo các lỗi ảo mà trên 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 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ể của bạn 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ộ thuộc một tập con của Python. Nhãn hiệu của Starlark có thể viết quy tắc mà hầu hết các nhà phát triển đều có thể sử dụng được, trong khi vẫn tạo ra các quy tắc có thể được sử dụng trong toàn bộ 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 những chương trình kiểm thử cần được 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 chiến dịch đó. Phát hiện mảnh da sớm bằng điều khiển từ xa để nhanh chóng chạy quy trình kiểm thử hàng nghìn lần.

Bazel cung cấp các phương tiện để tải kết quả thử nghiệm lên một trung tâm địa điểm, nhờ đó tạo điều kiện thuận lợi cho việc truyền đạt hiệu quả kết quả thử nghiệm, cho dù là cho CI hoặc theo từng nhà phát triển.

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ụ 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 phải bị hạn chế vào công cụ xây dựng đặc trư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 bạn có thể!), thay vào đó, bạn có thể chỉ ra Bazel vào vị trí của mã nguồn hoặc cấu phần phần mềm tạo sẵn (ví dụ: git) hoặc Maven Central), rồi xử lý phần còn lại.

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

Bazel có thể đồng thời xây dựng các dự án cho nhiều nền tảng, bao gồm cả Linux, macOS, Windows và Android. Chiến dịch này cũng cung cấp khả năng biên dịch chéo để 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, việc tạo dựng cộng đồng nhà phát triển sử dụng và đóng góp cho Bazel. Tìm công cụ, dịch vụ và tài liệu, bao gồm cả dịch vụ tư vấn và dịch vụ SaaS Bazel có thể sử dụng. Khám phá các tiện ích, chẳng hạn như tính năng hỗ trợ các ngôn ngữ lập trình bằng kho lưu trữ phần mềm nguồn mở của chúng tôi.