Tại sao lại là Bazel?

Báo cáo vấn đề Xem nguồn Nightly .

Bazel là một công cụ xây dựng nhanh, chính xácmở rộng được với 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 các tệp đầu vào mà mỗi lệnh bản dựng cần, tránh các công việc không cần thiết bằng cách chỉ chạy lại khi nhóm 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 các nút bản dựng từ xa. Nếu cấu trúc bản dựng cho phép, nó có thể chạy hàng nghìn lệnh tạo hoặc lệnh kiểm thử cùng một lúc.

Việc này được hỗ trợ bằng 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 đạt được tỷ lệ truy cập vào bộ nhớ đệm là 99%.

Bazel đã đúng

Bazel đảm bảo rằng các tệp nhị phân chỉ được tạo từ mã nguồn của bạn. Các thao tác Bazel chạy trong từng 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. Thao tác 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 dẫn đến cùng một tệp nhị phân từng bit.

Nói Goodbyte cho các lệnh gọi make clean bất tận và để đuổi theo các lỗi ảo đã thực sự được giải quyết trong mã nguồn chưa từng đượ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 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 thuộc một tập hợp con của Python. Starlark giúp hầu hết các nhà phát triển đều có thể viết quy tắc, đồng thời tạo ra các quy tắc có thể sử dụng được trê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 chương trình 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 chương trình kiểm thử đó. Phát hiện sớm các mảnh vỡ bằng cách sử dụng phương pháp 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 cơ sở vật chất để 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 kết quả kiểm thử một cách hiệu quả, có thể là trên CI hay đến 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ầ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ị ràng buộc với 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 có thể!), bạn có thể trỏ Bazel đến vị trí của mã nguồn hoặc cấu phần phần mềm tạo sẵn (ví dụ: kho lưu trữ git hoặc Maven Central). Công cụ này 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. Thư viện này cũng cung cấp các chức 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 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à dịch vụ SaaS mà 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ợ 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.