Giới thiệu về Bazel

Báo cáo vấn đề Xem nguồn Nightly/3}

Bazel là một công cụ kiểm thử và bản dựng nguồn mở tương tự như Make, Maven và Gradle. Công cụ này sử dụng một ngôn ngữ bản dựng cấp cao và dễ đọc. Bazel hỗ trợ các dự án bằng nhiều ngôn ngữ và tạo kết quả đầ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à một số lượng lớn người dùng.

Lợi ích

Bazel có những ưu điểm sau:

  • Ngôn ngữ bản dựng cấp cao. Bazel sử dụng một ngôn ngữ trừu tượng mà con người có thể đọc đượ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 tránh được sự phức tạp khi ghi từng lệnh gọi đến các công cụ như trình biên dịch và trình liên kết.

  • Bazel rất nhanh và đáng tin cậy. Bazel lưu mọi công việc đã làm trước đó vào bộ nhớ đệm và theo dõi các thay đổi đối với cả nội dung tệp lẫn lệnh bản dựng. Bằng cách này, Bazel sẽ biết khi nào cần xây dựng lại một thứ gì đó và chỉ tạo lại thứ gì đó. Để tăng tốc hơn nữa các bản dựng, bạn có thể thiết lập dự án tạo theo kiểu song song và tăng dần.

  • Bazel hoạt động trên nhiều 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.

  • Tiếng Bazel cân. Bazel duy trì sự linh hoạt trong khi xử lý các bản dựng có hơn 100 nghìn 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 trong hàng chục nghìn.

  • Baazel có thể mở rộng. Nhiều ngôn ngữ được hỗ trợ 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:

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

  2. Thiết lập một dự án không gian làm việc. Đây là một thư mục để Bazel tìm kiếm các dữ liệu đầu vào của bản dựng và các tệp BUILD, đồng thời là nơi Bazel lưu trữ dữ liệu đầu ra của bản dựng.

  3. Viết một tệp BUILD để cho Bazel biết cần tạo và cách tạo tệp đó.

    Bạn viết tệp BUILD bằng cách khai báo 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ẽ tạo cùng với các phần phụ thuộc của chúng, quy tắc bản dựng mà Bazel sẽ sử dụng để tạo cấu phần phần mềm đó 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ụ 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ụ đó. Bazel cung cấp một số quy tắc xây dựng bao gồm những loại cấu phần phần mềm phổ biến nhất bằng những 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 dữ liệu đầu ra của bạn trong không gian làm việc.

Ngoài việc tạo bản dựng, bạn cũng có thể sử dụng Bazel để chạy kiểm thử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 kiểm thử, Bazel thực hiện những việc sau:

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

  2. Phân tích dữ liệu đầu vào và phần phụ thuộc của dữ liệu đầu vào, áp dụng các quy tắc xây dựng đã chỉ định và tạo biểu đồ hành động.

  3. Thực thi các hành động tạo bản dựng trên dữ liệu đầu vào cho đến khi tạo ra kết quả đầu ra của bản dựng 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 được lưu vào bộ nhớ đệm và chỉ tạo lại hoặc kiểm thử lại những thay đổi. Để thực thi độ 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 thuần tuý 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 thể hiện 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 tạo 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ư tạo hoặc kiểm thử lệnh, và biết được công việc xây dựng nào đã thực hiện trước đó. Biểu đồ này cũng cho phé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 phần Bắt đầu hoặc chuyển thẳng đến hướng dẫn về Bazel: