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

Báo cáo vấn đề Xem nguồn Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Hành động

Một lệnh để chạy trong quá trình tạo, ví dụ: lệnh gọi đến một trình biên dịch nhận hiện vật làm dữ liệu đầu vào và tạo ra các hiện vật khác làm dữ liệu đầu ra. Bao gồm siêu dữ liệu như đối số dòng lệnh, khoá thao tác, 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ề các 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 giữa các hành động đã thực thi với đầu ra mà chúng tạo ra. Khoá bộ nhớ đệm được gọi là khoá hành động. Một thành phần cốt lõi cho mô hình 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 sau khi máy chủ Bazel khởi động lại.

Biểu đồ hành động

Một biểu đồ trong bộ nhớ gồm các thao táccác cấu phần phần mềm mà những thao tác này đọc và tạo. Biểu đồ 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 được tạo không được đề cập trong tệp BUILD. Được tạo trong giai đoạn phân tích và được dùng trong giai đoạn thực thi.

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

Một công cụ truy vấn có thể truy vấn trên các thao tác xây dựng. Điều này giúp bạn có thể phân tích cách quy tắc xây dựng chuyển thành các bản dựng thực tế.

Phím hành động

Khoá bộ nhớ đệm của một thao tác. Được tính toán dựa trên siêu dữ liệu của hành động, có thể bao gồm lệnh sẽ đượ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 thao tác một cách xác định.

Giai đoạn phân tích

Giai đoạn thứ hai của bản dựng. Xử lý biểu đồ đích được chỉ định trong các tệp BUILD để tạo ra một biểu đồ thao tác trong bộ nhớ. Biểu đồ này xác định thứ tự của các thao tác cần 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 được tạo. Cũng có thể là một thư mục chứa các tệp, được gọi là các cấu phần phần mềm dạng cây.

Một cấu phần phần mềm có thể là đầu vào cho nhiều thao tác, nhưng chỉ được tạo tối đa một thao tác.

Một cấu phần phần mềm tương ứng với mục tiêu tệp có thể được giải quyết bằng một nhãn.

Tỷ lệ

Một cơ chế để các quy tắc tạo thêm hành động 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 ta có thể áp dụng một khía cạnh trên A để đi qua lên một cạnh phụ thuộc đến B và chạy các thao tác bổ sung trong B để tạo và thu thập các tệp đầu ra bổ sung. Những thao tác bổ sung này được lưu vào bộ nhớ đệm và dùng lại giữa các mục tiêu yêu cầu cùng một khía cạnh. Được tạo bằng hàm aspect() Starlark Build API. Có thể dùng để tạo siêu dữ liệu cho các IDE và tạo các thao tác để kiểm tra lỗi.

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

Tỷ lệ khung hình trên tỷ lệ khung hình

Cơ chế kết hợp mà 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ụ: bạn có thể áp dụng một khía cạnh tạo thông tin để IDE sử dụng lên trên một khía cạnh tạo tệp .java từ một proto.

Để khía cạnh A áp dụng lên trên khía cạnh B, các trình cung cấpB quảng cáo trong thuộc tính provides phải khớp với những gì A khai báo là muốn trong thuộc tính required_aspect_providers.

Thuộc tính

Một tham số cho quy tắc, dùng để thể hiện thông tin bản dựng cho mỗi mục tiêu. Ví dụ: srcs, depscopts lần lượt khai báo các tệp nguồn, phần phụ thuộc và lựa 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ể có sẵn cho một mục tiêu nhất định sẽ 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 được dùng để thay đổi các giá trị mặc định cho cờ khởi độngcờ lệnh, đồng thời xác định các nhóm lựa chọn chung mà sau đó có thể được đặt 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, theo không gian làm việc, theo 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.

Gói linh hoạt

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

Tệp BUILD

Tệp BUILD là tệp cấu hình chính cho Bazel biết cần tạo đầu ra phần mềm nào, các phần phụ thuộc của đầu ra đó là gì và cách tạo đầu ra. Bazel lấy tệp BUILD làm dữ liệu đầu vào và dùng tệp này để tạo biểu đồ phần phụ thuộc cũng như để lấy các thao tác phải hoàn tất để tạo ra các đầ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ưới dạng một gói và có thể chứa các mục tiêu do quy tắc tạo. Bạn cũng có thể đặt tên cho tệp là BUILD.bazel.

Tệp BUILD.bazel

Xem BUILD Tệp. Được ưu tiên hơn tệp BUILD trong cùng một 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 bằng Starlark. Sau đó, bạn có thể nhập các tệp này vào BUILD bằng hàm load().

Tạo biểu đồ

Biểu đồ phần phụ thuộc mà Bazel tạo và duyệt qua để thực hiện một bản dựng. Bao gồm các nút như targets, configured targets, actionsartifacts. 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 nhóm mục tiêu được yêu cầu phụ thuộc vào đó được xác minh là mới nhất.

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

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

Bản dựng sạch

Một bản dựng không sử dụng kết quả của các bản dựng trước đó. Quá trình này thường diễn ra chậm hơn so với bản dựng gia tăng nhưng thường được coi là chính xác hơn. Bazel đảm bảo cả bản dựng sạch và bản dựng gia tăng 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 duy trì trên 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 dừng rõ ràng thông qua lệnh tắt bazel). Việc chia Bazel thành một máy chủ và máy khách giúp giảm thời gian khởi động JVM và 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 nhóm cờ dành riêng cho một lệnh. Cờ lệnh được chỉ định sau lệnh (bazel build <command flags>). Cờ có thể áp dụng 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à nhiều 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á các biểu đồ trong bộ nhớ và khởi động 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 quy tắc ảnh hưởng đến cách 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, các biến môi trường hành động và cờ bản dựng trên dòng lệnh. Quá trình chuyển đổi có thể tạo thêm các 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 bớt cấu hình

Quá trình chỉ bao gồm các phần của cấu hình mà mục tiêu thực sự cần. Ví dụ: nếu bạn tạo tệp nhị phân Java //:j bằng 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 sẽ làm hỏng khả năng lưu vào bộ nhớ đệm của bản dựng C++ một cách không cần thiết.

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

Một công cụ truy vấn truy vấn trên 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 được 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 lựa chọn của bản dựng với những mục tiêu cần được tạo. Ví dụ: nếu //:foo tạo cho 2 cấu trúc khác nhau trong cùng một bản dựng, thì bản dựng đó sẽ có 2 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 đầu ra của bản dựng đó phản ánh chính xác trạng thái của các đầu vào bắc cầu. Để đạt được các bản dựng chính xác, Bazel cố gắng trở thành hermetic, có thể tái tạo và tạo ra phân tích bản dựngthực thi hành động mang tính xác định.

Phần phụ thuộc

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

Depset

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 depsets diễn ra hiệu quả về thời gian và không gian, vì thường có các depsets rất lớn (hàng trăm nghìn tệp). Được triển khai để đệ quy tham chiếu đến các depsets khác vì lý do tiết kiệm không gian. Việc triển khai quy tắc không được "làm phẳng" depsets bằng cách chuyển đổi chúng thành danh sách, trừ phi quy tắc ở cấp cao nhất của biểu đồ bản dựng. Việc làm phẳng các depsets lớn sẽ tiêu tốn rất nhiều bộ nhớ. Còn được gọi là nested sets trong quá trình triển khai nội bộ của Bazel.

Xem thêm: Tài liệu về Depset

Bộ nhớ đệm trên ổ đĩa

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

Distdir

Một thư mục chỉ đọc chứa các tệp mà Bazel sẽ tìm nạp từ internet bằng các quy tắc kho lưu trữ. Cho phép các bản dựng chạy hoàn toàn ở chế độ ngoại tuyến.

Thực thi động

Một chiến lược thực thi chọn giữa thực thi cục bộ và 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 nhanh hơn cục bộ (ví dụ: liên kết) và những hành động khác thì nhanh hơn từ xa (ví dụ: quá trình biên dịch có khả năng song song hoá cao). Chiến lược thực thi linh hoạt có thể mang lại thời gian gia tăng và thời gian tạo bản dựng sạch tốt nhất có thể.

Giai đoạn thực thi

Giai đoạn thứ ba của bản dựng. Thực thi các thao tác trong action graph được tạo trong giai đoạn phân tích. Các 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ác cấu phần phần mềm. Chiến lược tạo kiểm soát cách các hành động này được thực thi: cục bộ, từ xa, linh hoạt, hộp cát, docker, v.v.

Thư mục 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, nơi các thao tác cục bộ được thực thi trong các bản dựng không 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 hiện vật đầu vào từ không gian làm việc. Thư mụ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ưới dạng các dữ liệu đầu vào khác và thư mục bazel-out để lưu trữ đầu ra. Được chuẩn bị trong giai đoạn tải bằng cách tạo một rừng symlink của các thư mục đại diện cho bao đó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

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

Độ kín

Một bản dựng là khép kín nếu không có ảnh hưởng bên ngoài nào đến các thao tác kiểm thử và tạo bản dựng của bản dựng đó. Điều này giúp đảm bảo rằng kết quả là xác định và chính xác. Ví dụ: các bản dựng khép kín thường không cho phép các thao tác truy cập vào mạng, hạn chế quyền truy cập vào các đầ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 các giá trị ban đầu cố định cho trình tạo số ngẫu nhiên

Bản dựng gia tăng

Bản dựng gia tăng 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 và lưu vào bộ nhớ đệm phần phụ thuộc 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 gia tăng là quy trình ngược lại với bản dựng sạch.

Hãng nhạc

Giá trị nhận dạng cho một mục tiêu. Một nhãn đủ điều kiện, chẳng hạn như //path/to/package:target, bao gồm // để đánh dấu thư mục gốc của không gian làm việc, path/to/package làm thư mục chứa tệp BUILD khai báo mục tiêu và :target làm 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ó tiền tố @my_repository//<..> để cho biết rằng đích đến đượ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 bản dựng, trong đó Bazel phân tích cú pháp WORKSPACE, BUILD.bzltệp để tạo gói. Macro và một số hàm như glob() được đánh giá trong giai đoạn này. Được xen kẽ với giai đoạn thứ hai của bản dựng, giai đoạn phân tích, để tạo biểu đồ mục tiêu.

Macro

Một cơ chế để kết hợp nhiều khai báo mục tiêu quy tắc với nhau 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. Được mở rộng thành các khai báo mục tiêu quy tắc cơ bản trong giai đoạn tải.

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

Mnemonic

Một chuỗi ngắn, dễ đọc do tác giả quy tắc chọn để nhanh chóng hiểu được hành động trong quy tắc đang làm gì. Bạn có thể dùng phương pháp ghi nhớ làm giá trị nhận dạng cho các lựa chọn chiến lược tạo. Một số ví dụ về phím tắt thao tác là Javac trong các quy tắc Java, CppCompile trong các quy tắc C++ và AndroidManifestMerger trong các quy tắc Android.

Quy tắc gốc

Các quy tắc được tích hợp vào Bazel và triển khai bằng Java. Những 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 quy tắc gốc) được tạo bằng Starlark.

Cơ sở đầ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. Được dùng để tách các đầ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 đầu ra của người dùng.

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ột mục tiêu. Các quy tắc đặt đầu ra 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á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 mà bạn có thể 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ữ đầ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 tạo 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 dữ liệu đầu ra của bản dựng của từng không gian làm việc, còn được gọi là cơ sở đầu ra.

Gói

Tập hợp mục tiêu do một 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 các tệp BUILD, do đó tạo thành một hệ thống phân cấp gói.

Nhóm gói

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

Nền tảng

"Loại máy" liên quan đến một bản dựng. Điều này bao gồm máy mà Bazel chạy trên đó ("nền tảng lưu trữ"), các công cụ xây dựng máy thực thi trên ("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

Một giản đồ mô tả một đơn vị thông tin để truyền giữa các mục tiêu quy tắc theo mối quan hệ phụ thuộc. Thông thường, tệp này chứa thông tin như các lựa chọn của 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 kết hợp với depset để lưu trữ hiệu quả dữ liệu bắc cầu tích luỹ. Ví dụ về một trình cung cấp tích hợp là DefaultInfo.

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

Truy vấn (khái niệm)

Quá trình phân tích biểu đồ bản dựng để tìm 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)

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

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

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

Bộ nhớ đệm có thể định địa chỉ nội dung dùng chung của các tệp do Bazel tải xuống để tạo bản dựng, có thể chia sẻ trên không gian làm việc. Cho phép tạo bản dựng ngoại tuyến sau lần tải xuống ban đầu. Thường được dùng để lưu vào bộ nhớ đệm các tệp được tải xuống thông qua các 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. Các tệp chỉ được lưu vào bộ nhớ đệm nếu tổng kiểm tra SHA-256 của các tệp đó được chỉ định cho quá trình tải xuống.

Khả năng tái tạo

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

Quy tắc

Một giản đồ để xác định mục tiêu của quy tắc trong tệp BUILD, chẳng hạn như cc_library. Theo quan điểm của tác giả tệp BUILD, một quy tắc bao gồm một tập hợp thuộc tính và logic hộp đen. Logic này cho biết mục tiêu quy tắc cách tạo ra hiện vật đầu ra và truyền thông tin đến các mục tiêu quy tắc khác. Theo quan điểm của tác giả .bzl, các 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 khởi tạo để tạo ra các mục tiêu quy tắc trong giai đoạn tải. Trong quy tắc giai đoạn phân tích, các mục tiêu truyền đạt thông tin đến các phần phụ thuộc ở hạ lưu dưới dạng trình cung cấp và đăng ký hành động mô tả cách tạo các cấu phần phần mềm đầu ra. 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ề các quy tắc

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

Một mục tiêu là một thực thể của một 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.

Runfiles

Các phần phụ thuộc thời gian chạy của một mục tiêu có thể thực thi. Thông thường, tệp thực thi là đầu ra thực thi của một quy tắc kiểm thử và runfile là các phần phụ thuộc dữ liệu thời gian chạy của kiểm thử. Trước khi gọi tệp thực thi (trong quá trình kiểm thử bazel), Bazel sẽ chuẩn bị cây runfile 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ề runfiles

Cơ chế hộp cát

Một kỹ thuật để tách biệt một hành động đang chạy bên trong một gốc thực thi tạm thời và bị hạn chế, giúp đảm bảo rằng hành động đó không đọc các đầu vào chưa khai báo hoặc ghi các đầu ra chưa khai báo. Hoạt động tạo hộp cát giúp cải thiện đáng kể tính khép kín, nhưng thường làm giảm hiệu suất và yêu cầu hệ điều hành hỗ trợ. Chi phí hiệu suất phụ thuộc vào nền tảng. Trên Linux, điều này không đáng kể, nhưng trên macOS, điều này có thể khiến quá trình tạo hộp cát không dùng được.

Skyframe

Skyframe là khung đánh giá gia tăng, chức năng và song song cốt lõi của Bazel.

Dập kim loại

Một tính năng để nhúng thêm thông tin vào các cấu phần phần mềm do Bazel tạo. Ví dụ: bạn có thể dùng thông tin này cho hoạt động kiểm soát nguồn, thời gian tạo 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 dấu thời gian.

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 (về mặt cú pháp và ngữ pháp) nhằm mục đích định cấu hình và để có hiệu suất tốt hơn. Sử dụng đuôi tệp .bzl. Tệp BUILD sử dụng 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 được gọi là Skylark.

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

Cờ khởi động

Tập hợp các cờ được chỉ định giữa bazellệnh, ví dụ: bazel --host_jvm_debug build. Các cờ này sửa đổi cấu hình của máy chủ Bazel, vì vậy, mọi nội dung 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

Một đố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 đại diện cho các đơn vị có thể tạo của một không gian làm việc theo quan điểm của người dùng cuối.

Một mục tiêu được khai báo bằng cách khởi tạo một quy tắc được gọi là mục tiêu quy tắc. Tuỳ thuộc vào quy tắc, những quy tắc này có thể chạy được (chẳng hạn như cc_binary) hoặc có thể kiểm thử được (chẳng hạn như cc_test). Các 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 thuộc tính (chẳng hạn như deps); những phần phụ thuộc này tạo thành cơ sở của biểu đồ mục tiêu.

Ngoài các mục tiêu quy tắc, còn có các mục tiêu tệp và mục tiêu nhóm gói. 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 mọi gói luôn được coi là mục tiêu của tệp nguồn trong gói đó.

Các mục tiêu được phát hiện trong giai đoạn tải. Trong giai đoạn phân tích, các mục tiêu được liên kết với cấu hình bản dựng để tạo thành các mục tiêu đã đị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à phần phụ thuộc của chúng. Được tạo trong giai đoạn tải và được dùng làm dữ liệu đầu vào cho giai đoạn phân tích.

Mẫu mục tiêu

Một 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ả các mục tiêu quy tắc), :* (tất cả cá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 một cách đệ quy). Có thể dùng kết hợp, ví dụ: //...:* có nghĩa là tất cả các mục tiêu quy tắc và tệp trong tất cả các gói một cách đệ quy từ gốc của không gian làm việc.

Thử nghiệm

Quy tắc targets đượ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 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 kiểm thử (chẳng hạn như 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 Bách khoa toàn thư về kiểm thử.

Chuỗi công cụ

Một bộ công cụ để tạo đầ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 và/hoặc trình kiểm tra lỗi. Chuỗi công cụ cũng có thể thay đổi theo nền tảng, tức là các thành phần của chuỗi công cụ trình biên dịch Unix có thể khác nhau đối với biến thể Windows, mặc dù chuỗi công cụ này 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ù cả hai mục tiêu đều cần được tạo. Một điểm khác biệt quan trọng giữa các mục tiêu cấp cao nhất và 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 quá trình 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

Một bản đồ á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 chúng được khởi tạo từ cùng một quy tắc. Một cách sử dụng phổ biến của các hiệu ứng chuyển đổi là dùng hiệu ứng chuyển đổi split, trong đó một số phần của biểu đồ đích được phân nhánh với các cấu hình riêng biệt cho từng nhánh. Ví dụ: bạn có thể tạo 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 quá trình chuyển đổi phân chia trong một bản dựng duy nhất.

Xem thêm: Hiệu ứng chuyển cảnh 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 các tệp. Vì bản thân các tệp này không phải là cấu phần phần mềm, nên thao tác hoạt động trên các tệp này phải đăng ký cấu phần phần mềm cây làm đầ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 bản dựng: mức hiển thị mục tiêu để kiểm soát việc liệu mục tiêu có thể phụ thuộc vào các mục tiêu khác hay không; và mức hiển thị tải để kiểm soát việc liệu 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ì "khả năng hiển thị" thường đề cập đến khả năng hiển thị của mục tiêu.

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

Không gian làm việc

Một thư mục chứa tệp WORKSPACE và mã nguồn cho phần mềm mà bạn muốn tạo. 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ù thường chứa các 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ừ mạng hoặc hệ thống tệp cục bộ.