Giới thiệu về Bazel

Bazel là một công cụ kiểm thử và xây dựng mã nguồn mở, tương tự như Make, Maven và Gradle. Công cụ này sử dụng ngôn ngữ xây dựng cấp cao, dễ đọc. Bazel hỗ trợ các dự án bằng nhiều ngôn ngữ và tạo bản dựng đầ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ữ xây dựng cấp cao. 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 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 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 và ổn định. 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 xây dựng. Nhờ đó, Bazel biết khi nào cần xây dựng lại và chỉ xây dựng lại nội dung đó. Để tăng tốc hơn nữa quá trình xây dựng, bạn có thể thiết lập dự án để xây dựng theo kiểu gia tăng và song song cao.

  • Bazel là 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 gói 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ó khả năng mở rộng. 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. Công cụ này hoạt động với nhiều kho lưu trữ và cơ sở người dùng có hàng chục nghìn người dùng.

  • Bazel có khả năng mở rộng. Nhiều ngôn ngữ được hỗ trợ và bạn có thể mở rộng Bazel để hỗ trợ bất kỳ ngôn ngữ hoặc khung nào khác.

Sử dụng Bazel

Để xây dựng hoặc kiểm thử một dự án bằng Bazel, bạn thường thực hiện như sau:

  1. Thiết lập Bazel. Tải xuống và cài đặt Bazel.

  2. Thiết lập một project workspace, đây là một thư mục mà Bazel tìm kiếm các dữ liệu đầu vào bản dựng và BUILD tệp, đồng thời lưu trữ các bản dựng đầu ra.

  3. Viết tệp BUILD, tệp này cho Bazel biết nội dung cần xây dựng và cách xây dựng.

    Bạn viết tệp BUILD bằng cách khai báo các mục tiêu bản 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 bản 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, quy tắc bản dựng mà Bazel sẽ sử dụng để xây dựng và các tuỳ chọn định cấu hình quy tắc bản dựng.

    Quy tắc bản dựng chỉ định các công cụ bản 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 bản dựng bao gồm các loại cấu phần phần mềm phổ biến nhất trong các ngôn ngữ được hỗ trợ trên các nền tảng được hỗ trợ.

  4. Chạy Bazel từ dòng lệnh. Bazel đặt các bản dựng đầu ra của bạn trong không gian làm việc.

Ngoài việc xây dựng, bạn cũng có thể sử dụng Bazel để chạy kiểm thửtruy vấn bản dựng nhằm theo dõi các phần phụ thuộc trong mã của mình.

Quy trình xây dựng Bazel

Khi chạy bản dựng hoặc kiểm thử, Bazel sẽ thực hiện như sau:

  1. Tải các tệp BUILD có liên quan đến mục tiêu.

  2. Phân tích dữ liệu đầu vào và các 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 biểu đồ hành động.

  3. Thực thi các hành động xây dựng trên dữ liệu đầu vào cho đến khi tạo ra các bản dựng đầu ra cuối cùng được tạo.

Vì tất cả công việc xây 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 được lưu vào bộ nhớ đệm , đồng thời chỉ xây dựng lại hoặc kiểm thử lại những nội dung đã thay đổi. Để đảm bảo tính chính xác hơn nữa, 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 kín đáo thông qua 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

Biểu đồ hành động đại diện cho các cấu phần phần mềm bản dựng, mối quan hệ giữa chúng, và các hành động xây 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 các hành động, chẳng hạn như lệnh xây dựng hoặc kiểm thử, đồng thời biết công việc xây dựng 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 bắt đầu

Để bắt đầu sử dụng Bazel, hãy xem bài viết Bắt đầu hoặc chuyển trực tiếp đến các hướng dẫn về Bazel: