Bazel là một công cụ kiểm thử và tạo mã nguồn mở, tương tự như Make, Maven và Gradle. Nó sử dụng ngôn ngữ bản dựng cấp cao mà con người có thể đọc được. Bazel hỗ trợ các dự án bằng nhiều ngôn ngữ và tạo đầu ra cho nhiều nền tảng. Bazel hỗ trợ các cơ sở mã lớn trên nhiều kho lưu trữ và số lượng lớn người dùng.
Lợi ích
Bazel mang lại những lợi ích sau:
Ngôn ngữ cấp cao để tạo bản dựng. Bazel sử dụng một ngôn ngữ trừu tượng, dễ đọc để mô tả các thuộc tính bản dựng của dự án ở cấp độ ngữ nghĩa cao. Không giống như các công cụ khác, Bazel hoạt động dựa trên các khái niệm về thư viện, tệp nhị phân, tập lệnh và tập dữ liệu, giúp bạn không phải đối mặt với sự phức tạp khi viết các lệnh gọi riêng lẻ cho các công cụ như trình biên dịch và trình liên kết.
Bazel nhanh chóng và đáng tin cậy. Bazel lưu vào bộ nhớ đệm tất cả công việc đã thực hiện trước đó và theo dõi các thay đổi đối với cả nội dung tệp và lệnh tạo. Bằng cách này, Bazel biết khi nào cần phải tạo lại một mục và chỉ tạo lại mục đó. Để tăng tốc hơn nữa quá trình tạo bản dựng, bạn có thể thiết lập dự án để tạo bản dựng theo cách song song và gia tăng cao.
Bazel là một nền tảng đa nền tảng. Bazel chạy trên Linux, macOS và Windows. Bazel có thể tạo các tệp nhị phân và gói có thể triển khai cho nhiều nền tảng, bao gồm cả máy tính, máy chủ và thiết bị di động, từ cùng một dự án.
Bazel có thể mở rộng quy mô. Bazel duy trì tính linh hoạt trong khi xử lý các bản dựng có hơn 100.000 tệp nguồn. Nền tảng này hoạt động với nhiều kho lưu trữ và cơ sở người dùng lên đến hàng chục nghìn.
Bazel có khả năng mở rộng. Bazel hỗ trợ nhiều ngôn ngữ và bạn có thể mở rộng Bazel để hỗ trợ mọi ngôn ngữ hoặc khung khác.
Sử dụng Bazel
Để tạo hoặc kiểm thử một dự án bằng Bazel, bạn thường làm như sau:
Thiết lập Bazel. Tải xuống và cài đặt Bazel.
Thiết lập không gian làm việc của dự án, đây là một thư mục mà Bazel tìm kiếm các tệp đầu vào và
BUILD
của bản dựng, đồng thời lưu trữ các tệp đầu ra của bản dựng.Viết một tệp
BUILD
, cho Bazel biết nội dung cần xây dựng và cách xây dựng nội dung đó.Bạn viết tệp
BUILD
bằng cách khai báo các mục tiêu xây dựng bằng Starlark, một ngôn ngữ dành riêng cho miền. (Xem ví dụ tại đây.)Mục tiêu xây dựng chỉ định một tập hợp các cấu phần phần mềm đầu vào mà Bazel sẽ xây dựng cùng với các phần phụ thuộc của chúng, quy tắc xây dựng mà Bazel sẽ dùng để xây dựng và các lựa chọn định cấu hình quy tắc xây dựng.
Quy tắc xây dựng chỉ định các công cụ xây dựng mà Bazel sẽ sử dụng, chẳng hạn như trình biên dịch và trình liên kết, cũng như cấu hình của các công cụ này. Bazel đi kèm với một số quy tắc xây dựng bao gồm các loại cấu phần phần mềm phổ biến nhất bằng các ngôn ngữ được hỗ trợ trên các nền tảng được hỗ trợ.
Chạy Bazel từ dòng lệnh. Bazel đặt các đầu ra của bạn trong không gian làm việc.
Ngoài việc tạo, bạn cũng có thể sử dụng Bazel để chạy các bài kiểm thử và truy vấn bản dựng để theo dõi các phần phụ thuộc trong mã của bạn.
Quy trình xây dựng Bazel
Khi chạy một bản dựng hoặc một kiểm thử, Bazel sẽ làm như sau:
Tải các tệp
BUILD
liên quan đến mục tiêu.Phân tích các đầu vào và phần phụ thuộc của chúng, áp dụng các quy tắc bản dựng đã chỉ định và tạo ra một biểu đồ hành động.
Thực thi các thao tác tạo trên dữ liệu đầu vào cho đến khi tạo ra dữ liệu đầu ra cuối cùng.
Vì tất cả công việc tạo bản dựng trước đó đều được lưu vào bộ nhớ đệm, nên Bazel có thể xác định và sử dụng lại các cấu phần phần mềm đã lưu vào bộ nhớ đệm, đồng thời chỉ tạo lại hoặc kiểm thử lại những gì đã thay đổi. Để tăng cường tính chính xác, bạn có thể thiết lập Bazel để chạy các bản dựng và kiểm thử một cách khép kín thông qua việc tạo hộp cát, giảm thiểu độ lệch và tối đa hoá khả năng tái tạo.
Biểu đồ hành động
Đồ thị hành động biểu thị các cấu phần phần mềm bản dựng, mối quan hệ giữa các cấu phần phần mềm đó và các hành động bản dựng mà Bazel sẽ thực hiện. Nhờ biểu đồ này, Bazel có thể theo dõi các thay đổi đối với nội dung tệp cũng như các thay đổi đối với hành động, chẳng hạn như lệnh tạo hoặc kiểm thử, đồng thời biết những công việc tạo nào đã được thực hiện trước đó. Biểu đồ này cũng giúp bạn dễ dàng theo dõi các phần phụ thuộc trong mã của mình.
Hướng dẫn cho người mới bắt đầu
Để bắt đầu sử dụng Bazel, hãy xem phần Bắt đầu hoặc chuyển thẳng đến các hướng dẫn về Bazel: