Bảng chú giải thuật ngữ Bazel

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

Hành động

Một lệnh chạy trong quá trình tạo bản dựng, chẳng hạn như lệnh gọi đến trình biên dịch lấy các cấu phần phần mềm làm dữ liệu đầu vào và tạo các cấu phần phần mềm khác làm đầu ra. Bao gồm siêu dữ liệu như các đối số dòng lệnh, phím hành động, biến môi trường và các cấu phần phần mềm đầu vào/đầu ra đã khai báo.

Xem thêm: Tài liệu về quy tắc

Bộ nhớ đệm của thao tác

Bộ nhớ đệm trên ổ đĩa lưu trữ mối liên kết của các hành động đã thực thi với các đầu ra mà các hành động đó đã tạo ra. Khoá bộ nhớ đệm còn gọi là khoá hành động. Một thành phần cốt lõi cho mô hình mức độ gia tăng của Bazel. Bộ nhớ đệm được lưu trữ trong thư mục cơ sở đầu ra và do đó vẫn tồn tại khi máy chủ Bazel khởi động lại.

Biểu đồ hành động

Một biểu đồ trong bộ nhớ về các thao táccấu phần phần mềm mà các thao tác này đọc và tạo. Biểu đồ này có thể bao gồm các cấu phần phần mềm tồn tại dưới dạng tệp nguồn (ví dụ: trong hệ thống tệp) cũng như các cấu phần phần mềm trung gian/cuối cùng đã tạo không được đề cập trong tệp BUILD. Được tạo trong giai đoạn phân tích và sử dụng trong giai đoạn thực thi.

Truy vấn biểu đồ hành động (truy vấn)

Một công cụ truy vấn có thể truy vấn thông qua các hành động tạo bản dựng. Điều này mang đến khả năng phân tích cách các quy tắc xây dựng chuyển thành các bản dựng công việc thực tế.

Phím hành động

Khoá lưu vào bộ nhớ đệm của một thao tác. Được tính toán dựa trên siêu dữ liệu hành động, có thể bao gồm lệnh được thực thi trong hành động, cờ trình biên dịch, vị trí thư viện hoặc tiêu đề hệ thống, tuỳ thuộc vào hành động. Cho phép Bazel lưu vào bộ nhớ đệm hoặc vô hiệu hoá từng hành động một cách quyết định.

Giai đoạn phân tích

Giai đoạn thứ hai của quá trình tạo bản dựng. Xử lý biểu đồ mục tiêu được chỉ định trong tệp BUILD để tạo biểu đồ hành động trong bộ nhớ nhằm xác định thứ tự của các thao tác sẽ chạy trong giai đoạn thực thi. Đây là giai đoạn đánh giá việc triển khai quy tắc.

Cấu phần phần mềm

Tệp nguồn hoặc tệp đã tạo. Đây cũng có thể là một thư mục tệp, được gọi là cấu phần phần mềm dạng cây.

Cấu phần phần mềm có thể là dữ liệu đầu vào cho nhiều hành động, nhưng chỉ được tạo tối đa một hành động.

Cấu phần phần mềm tương ứng với mục tiêu tệp có thể được xác định bằng nhãn.

Tỷ lệ

Cơ chế để các quy tắc tạo các hành động bổ sung trong các phần phụ thuộc của chúng. Ví dụ: nếu mục tiêu A phụ thuộc vào B, thì người dùng có thể áp dụng một khía cạnh trên A truyền lên cạnh phần phụ thuộc đến B và chạy các thao tác bổ sung trong B để tạo và thu thập thêm các tệp đầu ra. Những thao tác bổ sung này được lưu vào bộ nhớ đệm và sử dụng lại giữa các mục tiêu yêu cầu cùng một khía cạnh. Tạo bằng hàm aspect() Starlark Build API. Ví dụ: Bạn có thể sử dụng báo cáo này để tạo siêu dữ liệu cho các IDE và tạo thao tác để tìm lỗi mã nguồn.

Xem thêm: Tài liệu về các khía cạnh

Góc nhìn

Cơ chế tổng hợp theo đó các khía cạnh có thể được áp dụng cho kết quả của các khía cạnh khác. Ví dụ: một khung hình tạo thông tin để IDE sử dụng có thể được áp dụng bên trên một khung hình tạo tệp .java qua một proto.

Để một A được áp dụng ngoài B, những nhà cung cấpB quảng cáo trong thuộc tính provides phải khớp với nội dung mà A khai báo trong thuộc tính required_aspect_providers.

Thuộc tính

Tham số cho quy tắc, dùng để thể hiện thông tin bản dựng theo từng mục tiêu. Ví dụ: srcs, depscopts khai báo lần lượt các tệp nguồn, phần phụ thuộc và các tuỳ chọn trình biên dịch tuỳ chỉnh của mục tiêu. Các thuộc tính cụ thể dành cho một mục tiêu nhất định phụ thuộc vào loại quy tắc của mục tiêu đó.

.bazelrc

Tệp cấu hình của Bazel dùng để thay đổi các giá trị mặc định cho cờ khởi độngcờ lệnh cũng như để xác định các nhóm tuỳ chọn phổ biến mà sau đó có thể được thiết lập cùng nhau trên dòng lệnh Bazel bằng cách sử dụng cờ --config. Bazel có thể kết hợp các chế độ cài đặt từ nhiều tệp bazelrc (trên toàn hệ thống, mỗi không gian làm việc, mỗi người dùng hoặc từ một vị trí tuỳ chỉnh) và tệp bazelrc cũng có thể nhập các chế độ cài đặt từ các tệp bazelrc khác.

Blaze

Phiên bản nội bộ của Bazel. Hệ thống xây dựng chính của Google dành cho kho lưu trữ đơn âm của mình.

Tệp BUILD

Tệp BUILD là tệp cấu hình chính giúp Bazel biết cần tạo đầu ra là phần mềm nào, các phần phụ thuộc là gì và cách tạo các đầu ra đó. Bazel lấy tệp BUILD làm dữ liệu đầu vào và sử dụng tệp này để tạo một biểu đồ về các phần phụ thuộc, đồng thời lấy các hành động cần hoàn thành để tạo đầu ra phần mềm trung gian và cuối cùng. Tệp BUILD đánh dấu một thư mục và mọi thư mục con không chứa tệp BUILD ở dạng gói và có thể chứa mục tiêu do các quy tắc tạo. Tệp này cũng có thể được đặt tên là BUILD.bazel.

Tệp BUILD.bazel

Xem phần Tệp BUILD. Được ưu tiên hơn tệp BUILD trong cùng thư mục.

Tệp .bzl

Một tệp xác định các quy tắc, macro và hằng số được viết trong Starlark. Sau đó, bạn có thể nhập các dữ liệu này vào tệp BUILD bằng hàm load().

Tạo biểu đồ

Biểu đồ phần phụ thuộc mà Bazel tạo và truyền tải để tạo một bản dựng. Bao gồm các nút như mục tiêu, mục tiêu đã định cấu hình, hành độngcấu phần phần mềm. Một bản dựng được coi là đã hoàn tất khi tất cả các cấu phần phần mềm mà một tập hợp các mục tiêu được yêu cầu phụ thuộc vào đều được xác minh là đã cập nhật.

Chế độ cài đặt bản dựng

Một phần cấu hình do Starlark xác định. Chuyển đổi có thể thiết lập chế độ cài đặt bản dựng để thay đổi cấu hình của đồ thị con. Nếu hiển thị cho người dùng dưới dạng một cờ dòng lệnh, còn gọi là cờ bản dựng.

Dọn sạch bản dựng

Một bản dựng không sử dụng kết quả của các bản dựng trước đó. Đây thường là chậm hơn so với bản dựng tăng dần nhưng thường được xem là chính xác hơn. Bazel đảm bảo cả bản dựng sạch và tăng dần đều luôn chính xác.

Mô hình máy khách – máy chủ

Ứng dụng dòng lệnh bazel sẽ tự động khởi động một máy chủ nền trên máy cục bộ để thực thi các lệnh Bazel. Máy chủ vẫn tồn tại qua các lệnh nhưng tự động dừng sau một khoảng thời gian không hoạt động (hoặc rõ ràng là thông qua việc tắt Bazel). Việc chia Bazel thành một máy chủ và ứng dụng giúp phân bổ dần thời gian khởi động JVM, đồng thời hỗ trợ các bản dựng gia tăng nhanh hơn vì biểu đồ hành động vẫn nằm trong bộ nhớ trên các lệnh.

Lệnh

Được dùng trên dòng lệnh để gọi các hàm Bazel khác nhau, chẳng hạn như bazel build, bazel test, bazel runbazel query.

Cờ lệnh

Một tập hợp cờ dành riêng cho một lệnh. Cờ lệnh được chỉ định sau lệnh (bazel build <command flags>). Bạn có thể áp dụng cờ cho một hoặc nhiều lệnh. Ví dụ: --configure là cờ dành riêng cho lệnh bazel sync, nhưng --keep_going có thể áp dụng cho sync, build, test và các lệnh khác. Cờ thường được dùng cho mục đích cấu hình, vì vậy, những thay đổi về giá trị cờ có thể khiến Bazel vô hiệu hoá biểu đồ trong bộ nhớ và bắt đầu lại giai đoạn phân tích.

Cấu hình

Thông tin bên ngoài các định nghĩa về quy tắc mà tác động đến cách các quy tắc tạo ra hành động. Mỗi bản dựng có ít nhất một cấu hình chỉ định nền tảng mục tiêu, biến môi trường hành động và cờ bản dựng dòng lệnh. Quá trình chuyển đổi có thể tạo thêm cấu hình, chẳng hạn như cho các công cụ lưu trữ hoặc biên dịch chéo.

Xem thêm: Cấu hình

Cắt cấu hình

Quá trình chỉ đưa vào các phần cấu hình mà một mục tiêu thực sự cần đến. Ví dụ: nếu bạn xây dựng tệp nhị phân Java //:j với phần phụ thuộc C++ //:c, thì việc đưa giá trị của --javacopt vào cấu hình của //:c là không cần thiết vì việc thay đổi --javacopt một cách không cần thiết sẽ làm hỏng khả năng lưu vào bộ nhớ đệm của bản dựng C++.

Truy vấn được định cấu hình (cquery)

Một công cụ truy vấn truy vấn qua các mục tiêu đã định cấu hình (sau khi giai đoạn phân tích hoàn tất). Điều này có nghĩa là select()cờ bản dựng (chẳng hạn như --platforms) được phản ánh chính xác trong kết quả.

Xem thêm: tài liệu về cquery

Mục tiêu đã thiết lập

Kết quả của việc đánh giá một mục tiêu bằng một cấu hình. Giai đoạn phân tích tạo ra điều này bằng cách kết hợp các tuỳ chọn của bản dựng với các mục tiêu cần được tạo. Ví dụ: nếu //:foo tạo cho hai cấu trúc khác nhau trong cùng một bản dựng, thì nó sẽ có hai mục tiêu được định cấu hình: <//:foo, x86><//:foo, arm>.

Tính chính xác

Một bản dựng là chính xác khi kết quả của nó phản ánh một cách trung thực trạng thái của đầu vào bắc cầu. Để có được các bản dựng chính xác, Bazel cố gắng đảm bảo tính riêng biệt, có thể tái tạo và đưa ra phân tích bản dựng cũng như thực thi hành động một cách chắc chắn.

Phần phụ thuộc

Cạnh trực tiếp giữa hai mục tiêu. Một //:foo mục tiêu có phần phụ thuộc mục tiêu đối với //:bar mục tiêu nếu giá trị thuộc tính của //:foo có chứa tham chiếu đến //:bar. //:foo có một phần phụ thuộc hành động trên //:bar nếu một hành động trong //:foo phụ thuộc vào một cấu phần phần mềm đầu vào được tạo bởi một hành động trong //:bar.

Không tải được

Một cấu trúc dữ liệu để thu thập dữ liệu về các phần phụ thuộc bắc cầu. Được tối ưu hoá để việc hợp nhất các phần tách rời nhau vừa tiết kiệm thời gian và không gian, vì thông thường sẽ có các phần tách rất lớn (hàng trăm nghìn tệp). Được triển khai để tham chiếu đệ quy đến các phần sửa đổi khác vì lý do hiệu quả không gian. Việc triển khai quy tắc không được làm "làm phẳng" phần tách bằng cách chuyển đổi chúng thành danh sách trừ phi quy tắc nằm ở cấp cao nhất của biểu đồ bản dựng. Việc làm phẳng các phần tách lớn sẽ làm phát sinh mức tiêu thụ bộ nhớ rất lớn. Còn được gọi là tập hợp lồng nhau trong quy trình triển khai nội bộ của Bazel.

Xem thêm: Tài liệu về phần phụ thuộc

Bộ nhớ đệm của ổ đĩa

Một kho lưu trữ blob cục bộ trên ổ đĩa cho tính năng lưu vào bộ nhớ đệm từ xa. Có thể sử dụng kết hợp với một cửa hàng blob từ xa thực tế.

Cách xa

Một thư mục chỉ có thể đọc chứa các tệp mà Bazel sẽ tìm nạp từ Internet bằng các quy tắc về kho lưu trữ. Cho phép các bản dựng chạy hoàn toàn khi không có mạng.

Thực thi động

Chiến lược thực thi chọn giữa quá trình thực thi cục bộ và thực thi từ xa dựa trên nhiều phương pháp phỏng đoán, đồng thời sử dụng kết quả thực thi của phương thức thành công nhanh hơn. Một số hành động được thực thi cục bộ nhanh hơn (ví dụ: liên kết) và các hành động khác được thực thi từ xa nhanh hơn (ví dụ: quá trình biên dịch có khả năng song song cao độ). Chiến lược thực thi linh động có thể mang lại thời gian xây dựng sạch và tăng dần tốt nhất có thể.

Giai đoạn thực thi

Giai đoạn thứ ba của quá trình tạo bản dựng. Thực thi các hành động trong biểu đồ hành động được tạo trong giai đoạn phân tích. Những thao tác này gọi các tệp thực thi (trình biên dịch, tập lệnh) để đọc và ghi cấu phần phần mềm (artifacts). Chiến lược Spawn kiểm soát cách thực thi những thao tác này: cục bộ, từ xa, động, hộp cát, docker, v.v.

Gốc thực thi

Một thư mục trong thư mục cơ sở đầu ra của không gian làm việc, trong đó các hành động cục bộ được thực thi trong các bản dựng không có hộp cát. Nội dung thư mục chủ yếu là các đường liên kết tượng trưng của cấu phần phần mềm đầu vào từ không gian làm việc. Gốc thực thi cũng chứa các đường liên kết tượng trưng đến các kho lưu trữ bên ngoài ở dạng các dữ liệu đầu vào khác và thư mục bazel-out để lưu trữ dữ liệu đầu ra. Được chuẩn bị trong giai đoạn tải, bằng cách tạo rừng liên kết tượng trưng của các thư mục thể hiện trạng thái đóng bắc cầu của các gói mà bản dựng phụ thuộc vào đó. Có thể truy cập bằng bazel info execution_root trên dòng lệnh.

Tệp

Hãy xem Cấu phần phần mềm.

Tính bí mật

Một bản dựng có tính chất ẩn nếu không có tác động từ bên ngoài nào đối với hoạt động kiểm thử và tạo bản dựng. Điều này giúp đảm bảo rằng kết quả mang tính tất định và chính xác. Ví dụ: các bản dựng ẩn thường không cho phép truy cập mạng vào các hành động, hạn chế quyền truy cập vào dữ liệu đầu vào đã khai báo, sử dụng dấu thời gian và múi giờ cố định, hạn chế quyền truy cập vào các biến môi trường và sử dụng số ngẫu nhiên cố định cho trình tạo số ngẫu nhiên

Bản dựng tăng dần

Bản dựng tăng dần sẽ sử dụng lại kết quả của các bản dựng trước đó để giảm thời gian xây dựng và mức sử dụng tài nguyên. Việc kiểm tra phần phụ thuộc và lưu vào bộ nhớ đệm nhằm tạo ra kết quả chính xác cho loại bản dựng này. Bản dựng tăng dần là bản dựng ngược với bản dựng sạch.

Hãng nhạc

Giá trị nhận dạng của một mục tiêu. Một nhãn đủ điều kiện như //path/to/package:target chứa // để đánh dấu thư mục gốc của không gian làm việc, path/to/package là thư mục chứa tệp BUILD khai báo mục tiêu và :target là tên của mục tiêu được khai báo trong tệp BUILD nêu trên. Cũng có thể được thêm tiền tố @my_repository//<..> để cho biết mục tiêu được khai báo trong một kho lưu trữ bên ngoài có tên là my_repository.

Giai đoạn tải

Giai đoạn đầu tiên của một bản dựng, trong đó Bazel phân tích cú pháp các tệp WORKSPACE, BUILD.bzl để tạo gói. Macro và một số hàm nhất định như glob() được đánh giá trong giai đoạn này. Xen kẽ với giai đoạn thứ hai của quá trình tạo bản dựng (giai đoạn phân tích) để tạo biểu đồ mục tiêu.

Macro

Cơ chế tổng hợp nhiều nội dung khai báo mục tiêu quy tắc trong một hàm Starlark duy nhất. Cho phép sử dụng lại các mẫu khai báo quy tắc chung trên các tệp BUILD. Đã mở rộng các phần khai báo mục tiêu của quy tắc cơ bản trong giai đoạn tải.

Xem thêm: Tài liệu macro

Ghi nhớ

Một chuỗi ngắn mà con người có thể đọc được do tác giả quy tắc chọn để nhanh chóng hiểu được tác dụng của một hành động trong quy tắc. Hệ thống nhớ mang tên có thể được dùng làm giá trị nhận dạng cho các lựa chọn về chiến lược spawn. Một số ví dụ về ghi nhớ thao tác là Javac trong các quy tắc của Java, CppCompile trong các quy tắc C++ và AndroidManifestMerger trong các quy tắc của Android.

Quy tắc gốc

Các quy tắc được tích hợp vào Bazel và triển khai trong Java. Các quy tắc như vậy xuất hiện trong các tệp .bzl dưới dạng các hàm trong mô-đun gốc (ví dụ: native.cc_library hoặc native.java_library). Các quy tắc do người dùng xác định (không phải gốc) được tạo bằng cách sử dụng Starlark.

Cơ sở dữ liệu đầu ra

Một thư mục dành riêng cho không gian làm việc để lưu trữ các tệp đầu ra của Bazel. Dùng để tách biệt đầu ra khỏi cây nguồn của không gian làm việc. Nằm trong thư mục gốc của người dùng đầu ra.

Nhóm đầu ra

Một nhóm tệp dự kiến sẽ được tạo khi Bazel hoàn tất việc tạo mục tiêu. Rules (Quy tắc) đặt các kết quả thông thường của chúng vào "nhóm đầu ra mặc định" (ví dụ: tệp .jar của java_library, .a.so cho các mục tiêu cc_library). Nhóm đầu ra mặc định là nhóm đầu ra có cấu phần phần mềm được tạo khi một mục tiêu được yêu cầu trên dòng lệnh. Các quy tắc có thể xác định thêm các nhóm đầu ra được đặt tên có thể được chỉ định rõ ràng trong tệp BUILD (quy tắc filegroup) hoặc dòng lệnh (cờ --output_groups).

Thư mục gốc của người dùng đầu ra

Một thư mục dành riêng cho người dùng để lưu trữ các dữ liệu đầu ra của Bazel. Tên thư mục được lấy từ tên người dùng hệ thống của người dùng. Ngăn chặn xung đột tệp đầu ra nếu nhiều người dùng đang xây dựng cùng một dự án trên hệ thống cùng một lúc. Chứa các thư mục con tương ứng với đầu ra của bản dựng của từng không gian làm việc, còn gọi là cơ sở đầu ra.

Gói

Tập hợp mục tiêu do tệp BUILD xác định. Tên của gói là đường dẫn của tệp BUILD tương ứng với thư mục gốc của không gian làm việc. Một gói có thể chứa các gói con hoặc thư mục con chứa tệp BUILD, từ đó tạo thành một hệ phân cấp gói.

Nhóm gói

Một mục tiêu đại diện cho một tập hợp các gói. Thường được dùng trong giá trị thuộc tính visibility.

Nền tảng

Một "loại máy" liên quan đến một bản dựng. Trong đó bao gồm cả máy mà Bazel chạy trên (nền tảng "máy chủ", các công cụ xây dựng máy thực thi trên các nền tảng "thực thi") và các mục tiêu máy được xây dựng cho ("nền tảng mục tiêu").

Nhà cung cấp

Giản đồ mô tả một đơn vị thông tin để truyền giữa các mục tiêu quy tắc cùng với các mối quan hệ phụ thuộc. Thường thì tệp này chứa các thông tin như tuỳ chọn trình biên dịch, tệp nguồn hoặc tệp đầu ra bắc cầu và siêu dữ liệu bản dựng. Thường được dùng cùng với phần phụ thuộc để lưu trữ hiệu quả dữ liệu bắc cầu tích luỹ. Ví dụ về trình cung cấp tích hợp sẵn là DefaultInfo.

Xem thêm: Tài liệu về nhà cung cấp

Cụm từ tìm kiếm (khái niệm)

Quá trình phân tích biểu đồ bản dựng để hiểu các thuộc tính mục tiêu và cấu trúc phần phụ thuộc. Bazel hỗ trợ 3 biến thể truy vấn: query, cqueryaquery.

truy vấn (lệnh)

Công cụ truy vấn hoạt động trên biểu đồ mục tiêu sau giai đoạn tải của bản dựng. Quá trình này tương đối nhanh, nhưng không thể phân tích các tác động của select(), cờ bản dựng, cấu phần phần mềm hoặc tạo thao tác.

Xem thêm: Hướng dẫn truy vấn, Tài liệu tham khảo về truy vấn

Bộ nhớ đệm của kho lưu trữ

Một bộ nhớ đệm dùng chung cho các tệp mà Bazel tải xuống để tạo các bản dựng, có thể chia sẻ trên nhiều không gian làm việc. Bật bản dựng ngoại tuyến sau lần tải xuống ban đầu. Thường dùng để lưu các tệp được tải xuống vào bộ nhớ đệm thông qua quy tắc kho lưu trữ như http_archive và các API quy tắc kho lưu trữ như repository_ctx.download. Tệp chỉ được lưu vào bộ nhớ đệm nếu giá trị tổng kiểm SHA-256 được chỉ định cho tệp tải xuống.

Khả năng tái tạo

Thuộc tính của một bản dựng hoặc kiểm thử mà tập hợp các dữ liệu đầu vào cho bản dựng hoặc kiểm thử sẽ luôn tạo ra cùng một tập hợp đầu ra mọi lúc, bất kể thời gian, phương thức hay môi trường. Lưu ý rằng điều này không nhất thiết ngụ ý rằng dữ liệu đầu ra là chính xác hoặc là kết quả mong muốn.

Quy tắc

Giản đồ để xác định mục tiêu quy tắc trong tệp BUILD, chẳng hạn như cc_library. Từ góc độ của tác giả tệp BUILD, quy tắc bao gồm một tập hợp các thuộc tính và logic hộp đen. Logic này cho mục tiêu quy tắc biết cách tạo cấu phần phần mềm đầu ra và truyền thông tin đến các mục tiêu quy tắc khác. Từ góc độ của các tác giả .bzl, quy tắc là cách chính để mở rộng Bazel nhằm hỗ trợ các ngôn ngữ lập trình và môi trường mới.

Các quy tắc được tạo thực thể để tạo mục tiêu quy tắc trong giai đoạn tải. Trong giai đoạn phân tích, các mục tiêu quy tắc sẽ giao tiếp thông tin đến các phần phụ thuộc ở hạ nguồn dưới dạng trình cung cấp và đăng ký thao tác mô tả cách tạo cấu phần phần mềm đầu ra của chúng. Các thao tác này được chạy trong giai đoạn thực thi.

Xem thêm: Tài liệu về quy tắc

Mục tiêu của quy tắc

Mục tiêu là thực thể của quy tắc. Tương phản với mục tiêu tệp và nhóm gói. Đừng nhầm lẫn với quy tắc.

Tệp chạy

Các phần phụ thuộc thời gian chạy của một mục tiêu thực thi. Thông thường, tệp thực thi là dữ liệu đầu ra có thể thực thi của một quy tắc kiểm thử và các tệp chạy là các phần phụ thuộc dữ liệu trong thời gian chạy của quy trình kiểm thử. Trước khi gọi tệp thực thi (trong quá trình kiểm thử Bazel), Bazel chuẩn bị cây chạy tệp cùng với tệp thực thi kiểm thử theo cấu trúc thư mục nguồn của chúng.

Xem thêm: Tài liệu về tệp Runfile

Cơ chế hộp cát

Kỹ thuật này dùng để tách riêng một hành động đang chạy bên trong một gốc thực thi bị hạn chế và tạm thời, giúp đảm bảo rằng phương thức này không đọc các dữ liệu đầu vào chưa được khai báo hoặc ghi các kết quả chưa được khai báo. Hộp cát giúp cải thiện đáng kể tính bảo mật, nhưng thường làm giảm hiệu suất và đòi hỏi sự hỗ trợ của hệ điều hành. Chi phí hiệu suất phụ thuộc vào nền tảng. Trên Linux, tuỳ chọn này không đáng kể, nhưng trên macOS có thể khiến hộp cát không sử dụng được.

Khung chân trời

Skyframe là khung đánh giá cốt lõi song song, hoạt động và tăng dần của Bazel.

Dập kim loại

Tính năng nhúng thông tin bổ sung vào các cấu phần phần mềm do Bazel tạo. Ví dụ: các đối tượng này có thể được dùng để kiểm soát nguồn, thời gian xây dựng và các thông tin khác liên quan đến không gian làm việc hoặc môi trường cho các bản phát hành. Bật thông qua cờ --workspace_status_commandcác quy tắc hỗ trợ thuộc tính tem.

Starlark

Ngôn ngữ tiện ích để viết quy tắcmacro. Một tập hợp con bị hạn chế của Python (cú pháp và ngữ pháp) nhằm mục đích định cấu hình và mang lại hiệu suất tốt hơn. Sử dụng đuôi tệp .bzl. Các tệp BUILD sử dụng một phiên bản Starlark bị hạn chế hơn nữa (chẳng hạn như không có định nghĩa hàm def), trước đây là Skylark.

Xem thêm: Tài liệu về ngôn ngữ của Starlark

Cờ khởi động

Tập hợp cờ được chỉ định giữa bazellệnh, ví dụ: bản dựng bazel --host_jvm_debug. Những cờ này sửa đổi cấu hình của máy chủ Bazel, vì vậy, mọi sửa đổi đối với cờ khởi động đều khiến máy chủ khởi động lại. Cờ khởi động không dành riêng cho bất kỳ lệnh nào.

Mục tiêu

Đối tượng được xác định trong tệp BUILD và được xác định bằng một nhãn. Mục tiêu thể hiện các đơn vị có thể tạo của một không gian làm việc từ góc độ của người dùng cuối.

Mục tiêu được khai báo bằng cách tạo thực thể cho một quy tắc được gọi là mục tiêu quy tắc. Tuỳ thuộc vào quy tắc, các mục tiêu này có thể chạy (như cc_binary) hoặc có thể kiểm thử (như cc_test). Mục tiêu quy tắc thường phụ thuộc vào các mục tiêu khác thông qua các thuộc tính của chúng (chẳng hạn như deps); các phần phụ thuộc này tạo thành cơ sở của biểu đồ mục tiêu.

Ngoài mục tiêu quy tắc, còn có mục tiêu tệp và mục tiêu nhóm gói. Các mục tiêu tệp tương ứng với cấu phần phần mềm được tham chiếu trong tệp BUILD. Trong trường hợp đặc biệt, tệp BUILD của gói bất kỳ luôn được coi là mục tiêu tệp nguồn trong gói đó.

Hệ thống sẽ phát hiện các mục tiêu trong giai đoạn tải. Trong giai đoạn phân tích, các mục tiêu sẽ được liên kết với cấu hình bản dựng để tạo thành mục tiêu được định cấu hình.

Biểu đồ mục tiêu

Một biểu đồ trong bộ nhớ về các mục tiêu và các phần phụ thuộc của các mục tiêu đó. Được tạo trong giai đoạn tải và dùng làm dữ liệu đầu vào cho giai đoạn phân tích.

Mẫu mục tiêu

Cách chỉ định một nhóm mục tiêu trên dòng lệnh. Các mẫu thường dùng là :all (tất cả mục tiêu quy tắc), :* (tất cả mục tiêu quy tắc + tệp), ... (gói hiện tại và tất cả các gói con theo quy tắc đệ quy). Có thể sử dụng kết hợp, chẳng hạn như //...:* là mọi mục tiêu quy tắc và tệp trong tất cả các gói theo cách đệ quy từ thư mục gốc của không gian làm việc.

Kiểm thử

Các mục tiêu quy tắc được tạo thực thể từ các quy tắc kiểm thử và do đó chứa một tệp thực thi kiểm thử. Mã trả về bằng 0 từ khi hoàn tất tệp thực thi cho biết kiểm thử thành công. Hợp đồng chính xác giữa Bazel và các hoạt động kiểm thử (chẳng hạn như các biến môi trường kiểm thử, phương thức thu thập kết quả kiểm thử) được chỉ định trong Kiểm thử Bách khoa toàn thư.

Chuỗi công cụ

Tập hợp các công cụ để xây dựng đầu ra cho một ngôn ngữ. Thông thường, một chuỗi công cụ bao gồm trình biên dịch, trình liên kết, trình thông dịch hoặc/và trình tìm lỗi mã nguồn. Một chuỗi công cụ cũng có thể khác nhau tuỳ theo nền tảng, tức là các thành phần của chuỗi công cụ biên dịch Unix có thể khác nhau tuỳ theo biến thể Windows, mặc dù chuỗi công cụ đó dành cho cùng một ngôn ngữ. Việc chọn chuỗi công cụ phù hợp cho nền tảng được gọi là độ phân giải chuỗi công cụ.

Mục tiêu cấp cao nhất

Mục tiêu bản dựng là cấp cao nhất nếu được yêu cầu trên dòng lệnh Bazel. Ví dụ: nếu //:foo phụ thuộc vào //:barbazel build //:foo được gọi, thì đối với bản dựng này, //:foo là cấp cao nhất và //:bar không phải là cấp cao nhất, mặc dù bạn cần tạo cả hai mục tiêu. Một điểm khác biệt quan trọng giữa mục tiêu cấp cao nhất và mục tiêu không phải cấp cao nhất là cờ lệnh được đặt trên dòng lệnh Bazel (hoặc thông qua .bazelrc) sẽ đặt cấu hình cho các mục tiêu cấp cao nhất, nhưng có thể được sửa đổi bằng một chuyển đổi cho các mục tiêu không phải cấp cao nhất.

Hiệu ứng chuyển cảnh

Ánh xạ trạng thái cấu hình từ giá trị này sang giá trị khác. Cho phép các mục tiêu trong biểu đồ bản dựng có các cấu hình khác nhau, ngay cả khi các mục tiêu đó được tạo thực thể từ cùng một quy tắc. Cách sử dụng hiệu ứng chuyển đổi phổ biến là chuyển đổi phân tách, trong đó một số phần của biểu đồ mục tiêu được phát triển nhánh với các cấu hình riêng biệt cho mỗi nhánh. Ví dụ: người dùng có thể xây dựng một APK Android có các tệp nhị phân gốc được biên dịch cho ARM và x86 bằng cách sử dụng các hiệu ứng chuyển đổi phân tách trong một bản dựng duy nhất.

Xem thêm: Chuyển đổi do người dùng xác định

Cấu phần phần mềm cây

Một cấu phần phần mềm đại diện cho một tập hợp tệp. Vì các tệp này không phải là cấu phần phần mềm, nên một hành động vận hành trên các tệp này phải đăng ký cấu phần phần mềm của cây làm dữ liệu đầu vào hoặc đầu ra.

Chế độ hiển thị

Một trong hai cơ chế ngăn chặn các phần phụ thuộc không mong muốn trong hệ thống xây dựng: chế độ hiển thị mục tiêu để kiểm soát xem một mục tiêu có thể bị các mục tiêu khác phụ thuộc hay không; và chế độ hiển thị tải để kiểm soát xem tệp BUILD hoặc .bzl có thể tải một tệp .bzl nhất định hay không. Nếu không có ngữ cảnh, thì "chế độ hiển thị" thường dùng để chỉ mức độ hiển thị mục tiêu.

Xem thêm: Tài liệu về chế độ hiển thị

Workspace

Thư mục chứa tệp WORKSPACE và mã nguồn cho phần mềm bạn muốn xây dựng. Các nhãn bắt đầu bằng // có liên quan đến thư mục không gian làm việc.

Tệp WORKSPACE

Xác định một thư mục là không gian làm việc. Tệp này có thể trống, mặc dù tệp này thường chứa các nội dung khai báo kho lưu trữ bên ngoài để tìm nạp các phần phụ thuộc bổ sung từ hệ thống tệp mạng hoặc cục bộ.