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

Báo cáo vấn đề Xem nguồn Nightly · 8.4 · 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 các cấu phần phần mềm làm dữ liệu đầu vào và tạo ra các cấu phần phần mềm 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á 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ề 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 thao tác đã thực thi với đầu ra mà các thao tác đó 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ớ về 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ông việc thực tế mà bản dựng thực hiện.

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ớ, xác định thứ tự 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ì bạn 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, đồng thời 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 gốc

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), đồng thời 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 chúng là gì và cách tạo các phần phụ thuộc đó. Bazel lấy tệp BUILD làm đầ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 đều đượ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 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 á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ột 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à lãng phí 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 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.

Trong một số ngữ cảnh, thuật ngữ này cũng có thể đề cập đến một phần phụ thuộc bên ngoài; hãy xem các mô-đun.

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" các 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 một bản dựng. Thực thi các thao tác trong biểu đồ thao tác đượ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.

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.

Hermeticity

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à 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. Quá trình kiểm tra và lưu vào bộ nhớ đệm phần phụ thuộc nhằm mục đích 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à bản dựng 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. Thường có dạng @repo//path/to/package:target, trong đó repo là tên (rõ ràng) của kho lưu trữ chứa mục tiêu, path/to/package là đường dẫn đến thư mục chứa tệp BUILD khai báo mục tiêu (thư mục này còn được gọi là gói) và target là tên của chính mục tiêu. Tuỳ thuộc vào tình huống, bạn có thể bỏ qua một số phần trong cú pháp này.

Xem thêm: Nhãn

Giai đoạn tải

Giai đoạn đầu tiên của bản dựng, trong đó Bazel thực thi các tệp BUILD để tạo các 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 cũ

Một loại macro được khai báo dưới dạng một hàm Starlark thông thường và chạy như một tác dụng phụ của việc thực thi tệp BUILD.

Macro cũ có thể làm mọi việc mà một hàm có thể làm. Điều này có nghĩa là các phím này có thể thuận tiện nhưng cũng có thể khó đọc, viết và sử dụng hơn. Một macro cũ có thể đột biến đối số một cách không mong muốn hoặc không thành công khi được cung cấp một đối số select() hoặc đối số có kiểu không chính xác.

Tương phản với macro tượng trưng.

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

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 gọi 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 thành các khai báo mục tiêu quy tắc cơ bản trong giai đoạn tải.

Có hai loại: macro tượng trưng (kể từ Bazel 8) và macro cũ.

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.

Mô-đun

Một dự án Bazel có thể có nhiều phiên bản, mỗi phiên bản có thể có các phần phụ thuộc vào các mô-đun khác. Điều này tương tự như các khái niệm quen thuộc trong các hệ thống quản lý phần phụ thuộc khác, chẳng hạn như một cấu phần phần mềm Maven, một gói npm, một mô-đun Go hoặc một crate Cargo. Các mô-đun tạo thành nền tảng của hệ thống quản lý phần phụ thuộc bên ngoài của Bazel.

Mỗi mô-đun được hỗ trợ bởi một repo có tệp MODULE.bazel ở gốc. Tệp này chứa siêu dữ liệu về chính mô-đun (chẳng hạn như tên và phiên bản), các phần phụ thuộc trực tiếp và nhiều dữ liệu khác, bao gồm cả các mục đăng ký chuỗi công cụ và đầu vào tiện ích mô-đun.

Siêu dữ liệu mô-đun được lưu trữ trong các sổ đăng ký Bazel.

Xem thêm: Các mô-đun Bazel

Tiện ích mô-đun

Một phần logic có thể chạy để tạo repo bằng cách đọc dữ liệu đầu vào từ biểu đồ phần phụ thuộc mô-đun và gọi các quy tắc repo. Các tiện ích mô-đun có những chức năng tương tự như các quy tắc kho lưu trữ, cho phép chúng truy cập vào Internet, thực hiện thao tác I/O tệp, v.v.

Xem thêm: Tiện ích mô-đun

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 (kho lưu trữ chính). 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ộ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 repo. 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 các 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 "máy chủ"), 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, cấu phần mềm 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

Kho lưu trữ

Một cây thư mục có tệp đánh dấu ranh giới ở gốc, chứa các tệp nguồn có thể dùng trong bản dựng Bazel. Thường được rút gọn thành repo.

Tệp đánh dấu ranh giới kho lưu trữ có thể là MODULE.bazel (cho biết kho lưu trữ này đại diện cho một mô-đun Bazel), REPO.bazel hoặc trong các bối cảnh cũ, WORKSPACE hoặc WORKSPACE.bazel. Mọi tệp đánh dấu ranh giới kho lưu trữ sẽ biểu thị ranh giới của một kho lưu trữ; nhiều tệp như vậy có thể cùng tồn tại trong một thư mục.

Kho lưu trữ chính là kho lưu trữ mà lệnh Bazel hiện tại đang chạy.

Kho lưu trữ bên ngoài được xác định bằng cách chỉ định các mô-đun trong tệp MODULE.bazel hoặc gọi các quy tắc kho lưu trữ trong các tiện ích mô-đun. Chúng có thể được tìm nạp theo yêu cầu đến một vị trí "kỳ diệu" được xác định trước trên ổ đĩa.

Mỗi kho lưu trữ có một tên chuẩn duy nhất và không đổi, đồng thời có thể có các tên hiển thị khác nhau khi xem từ các kho lưu trữ khác.

Xem thêm: Tổng quan về các phần phụ thuộc bên ngoài

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.

Quy tắc kho lưu trữ

Một giản đồ cho các định nghĩa về kho lưu trữ, cho Bazel biết cách hiện thực hoá (hoặc "tìm nạp") một kho lưu trữ. Thường được rút gọn thành quy tắc kho lưu trữ. Các quy tắc về kho lưu trữ được Bazel gọi nội bộ để xác định các kho lưu trữ được hỗ trợ bởi các mô-đun hoặc có thể được tiện ích mô-đun gọi. Các quy tắc về kho lưu trữ có thể truy cập vào Internet hoặc thực hiện thao tác I/O đối với tệp; quy tắc phổ biến nhất về kho lưu trữ là http_archive để tải một kho lưu trữ chứa các tệp nguồn xuống từ Internet.

Xem thêm: Tài liệu về quy tắc kho lưu trữ

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à các 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 để cô lập 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à cần có sự hỗ trợ từ hệ điều hành. 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 được tạo bằng Bazel. 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 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.

Macro tượng trưng

Một loại macro được khai báo bằng giản đồ attribute giống như rule, cho phép ẩn targets được khai báo nội bộ khỏi gói của riêng chúng và thực thi một mẫu đặt tên có thể dự đoán trên các mục tiêu mà macro khai báo. Được thiết kế để tránh một số vấn đề gặp phải trong các cơ sở mã macro cũ lớn.

Xem thêm: Tài liệu về macro tượng trưng

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 của 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 đồ thị 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 khởi tạo 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ư 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 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: 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 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ể được các mục tiêu khác phụ thuộc vào 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ôi trường được chia sẻ bởi tất cả các lệnh Bazel chạy từ cùng một kho lưu trữ chính.

Xin lưu ý rằng trước đây, các khái niệm về "kho lưu trữ" và "không gian làm việc" đã bị lẫn lộn; thuật ngữ "không gian làm việc" thường được dùng để chỉ kho lưu trữ chính, và đôi khi thậm chí còn được dùng làm từ đồng nghĩa của "kho lưu trữ". Bạn nên tránh sử dụng như vậy để đảm bảo tính rõ ràng.