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

Báo cáo sự cố Xem nguồn

Hành động

Một lệnh sẽ 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 sẽ lấy 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 các 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ề quy tắc

Bộ nhớ đệm thao tác

Bộ nhớ đệm trên ổ đĩa lưu trữ liên kết các hành động được thực thi với dữ liệu đầu ra mà chúng đã tạo. 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 mức độ gia tăng của Bazel. Bộ nhớ đệm này được lưu trữ trong thư mục cơ sở đầu ra nên vẫn tồn tại sau khi máy chủ Bazel khởi động lại.

Biểu đồ hành động

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 ra. 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 chưa được đề cập trong tệp BUILD. Được tạo ra 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 (truy vấn)

Công cụ truy vấn có thể truy vấn qua thao tác tạo bản dựng. Do đó, bạn có thể phân tích cách quy tắc bản dựng chuyển thành hoạt động thực tế của bản dựng.

Phím hành động

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

Giai đoạn phân tích

Giai đoạn thứ hai của quá trình xây 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ớ giúp xác định thứ tự các hành động 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

Một tệp nguồn hoặc một tệp được tạo. Cũng có thể là thư mục của tệp, được gọi là cấu phần phần mềm 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 bởi tối đa một hành động.

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

Tỷ lệ

Cơ chế để các quy tắc tạo hành động bổ sung trong phần phụ thuộc. Ví dụ: nếu mục tiêu A phụ thuộc vào B, bạn có thể áp dụng một khung hình trên A truyền tải lên cạnh phụ thuộc đến B, đồng thời chạy các thao tác khác trong B để tạo và thu thập thêm 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 có cùng khung hiển thị. Được tạo bằng hàm aspect() Starlark Build API. Ví dụ: bạn có thể sử dụng để tạo siêu dữ liệu cho IDE và tạo hành động để 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

Một cơ chế cấu trúc trong đó 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 thành phần tạo ra thông tin để IDE sử dụng có thể được áp dụng trên một thành phần tạo ra tệp .java từ một proto.

Để áp dụng một khía cạnh A ngoài khía cạnh B, các 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, được dùng để thể hiện thông tin bản dựng theo 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à tuỳ chọn tuỳ chỉnh của trình biên dịch 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 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 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, 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à một tệp bazelrc cũng có thể nhập chế độ cài đặt từ các tệp bazelrc khác.

Blaze

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

Tệp XÂY DỰNG

Tệp BUILD là tệp cấu hình chính cho Bazel biết cần xây dựng đầu ra phần mềm nào, các phần phụ thuộc đó là gì và cách tạo các phần phụ thuộc đó. Bazel lấy tệp BUILD làm dữ liệu đầu vào và sử dụng tệp này để tạo biểu đồ các phần phụ thuộc, đồng thời lấy các hành động cần được hoàn thành nhằm xây dựng đầ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 là một gói, đồng thời có thể chứa các 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

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 tệp BUILD bằng cách dùng hàm load().

Tạo biểu đồ

Biểu đồ phần phụ thuộc mà Bazel tạo và truyền tải để xây dựng. Bao gồm các nút như mục tiêu, mục tiêu được đị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à mới nhất.

Cài đặt bản dựng

Một phần của cấu hình do Starlark xác định. Chuyển đổi (Transitions) có thể thiết lập các chế độ cài đặt bản dựng để thay đổi cấu hình của biểu đồ con. Nếu được người dùng nhìn thấy dưới dạng một cờ dòng lệnh (còn 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 chậm hơn một bản dựng tăng dần nhưng thường được coi là chính xác hơn. Bazel đảm bảo cả các bản dựng sạch và tăng dần 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 đối với 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 tính năng tắt Bazel). Việc tách Bazel thành một máy chủ và ứng dụng giúp phân bổ thời gian khởi động JVM và hỗ trợ các bản dựng tăng dần nhanh hơn vì biểu đồ hành động vẫn còn trong bộ nhớ giữa các lệnh.

Lệnh

Được dùng trên dòng lệnh để gọi các hàm Bazel, 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 vùng khác. Cờ thường được dùng cho mục đích cấu hình. Vì vậy, những thay đổi trong 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 nằm ngoài các định nghĩa của quy tắc ảnh hưởng đến cách quy tắc tạo ra thao tác. 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 trong dòng lệnh. Quá trình chuyển đổi có thể tạo ra các cấu hình bổ sung, 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ỉ 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 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)

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 đã định cấu hình

Kết quả đánh giá một mục tiêu bằng một cấu hình. Giai đoạn phân tích sẽ tạo ra quá trình 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 tạo. Ví dụ: nếu //:foo tạo bản dựng cho hai cấu trúc khác nhau trong cùng một bản dựng, thì công cụ đó 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 dữ liệu đầu ra của bản dựng đó phản ánh trung thực trạng thái đầu vào bắc cầu. Để có được các bản dựng chính xác, Bazel cố gắng tạo ra các bản dựng khép kín, có khả năng tái tạo, đồng thời đưa ra phân tích bản dựngthực thi hành động một cách có tính quyết định.

Phần phụ thuộc

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

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

Phần cài đặ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 phụ thuộc tiết kiệm thời gian và không gian, vì thường sẽ có các phần phụ thuộc 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 phụ thuộc khác vì lý do hiệu quả của không gian. Việc triển khai quy tắc không được "làm phẳng" các phần phụ thuộc bằng cách chuyển đổi các phần phụ thuộc đó 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 phụ thuộc lớn sẽ làm tiêu tốn rất nhiều bộ nhớ. Còn được gọi là các tập hợp lồng ghép trong hoạt động triển khai nội bộ của Bazel.

Xem thêm: Tài liệu về phần khởi động

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

Cửa hàng blob cục bộ trên ổ đĩa dành 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ế.

Khoảng cách

Thư mục chỉ đọc chứa các tệp mà Bazel sẽ tìm nạp từ Internet bằng cách sử dụng các quy tắc 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 linh động

Một chiến lược thực thi lựa 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ố thao tác được thực thi nhanh hơn cục bộ (ví dụ: liên kết) và một số thao tác khác nhanh hơn từ xa (ví dụ: quá trình biên dịch có thể tải song song cao). Chiến lược thực thi động có thể cung cấp thời gian xây dựng tăng dần và rõ ràng nhất có thể.

Giai đoạn thực thi

Giai đoạn thứ ba của quá trình xây 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 hành động này sẽ 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. Chiến lược spawn kiểm soát cách thực hiện những hành động sau: 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, nơi các thao tác cục bộ được thực thi trong các bản dựng không phải ở dạ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 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 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ữ đầu ra. Được chuẩn bị trong giai đoạn tải bằng cách tạo một rừng liên kết tượng trưng của các thư mục đại diện cho 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 được bằng bazel info execution_root trên dòng lệnh.

Tệp

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

Độ cứng

Một bản dựng mang tính ẩn khi không có tác động bên ngoài nào đối với hoạt động tạo và kiểm thử của bản dựng, giúp đảm bảo rằng kết quả có tính xác định và chính xác. Ví dụ: các bản dựng bí mật 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 đầ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 nội dung gốc 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ử 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. Mục đích của việc kiểm tra phần phụ thuộc và lưu vào bộ nhớ đệm sẽ 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 sẽ ngược lại với bản dựng sạch.

Nhãn

Giá trị nhận dạng của mục tiêu. Thường có dạng @repo//path/to/package:target, trong đó repo là tên (gốc) 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 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, các phần của cú pháp này có thể bị bỏ qua.

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 gói. Macro và một số hàm như glob() được đánh giá trong giai đoạn này. Xen kẽ với giai đoạn thứ hai của bản dựng (giai đoạn phân tích) để tạo một biểu đồ mục tiêu.

Macro

Cơ chế để kết hợp nhiều nội dung khai báo mục tiêu quy tắc cùng nhau trong một hàm Starlark. Cho phép sử dụng lại các mẫu khai báo quy tắc phổ biến trên các tệp BUILD. Mở rộng sang nội dung 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 vĩ mô

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 một thao tác trong quy tắc đang làm gì. Thao tác ghi nhớ có thể được dùng làm giá trị nhận dạng cho các lựa chọn chiến lược sinh sản. Một số ví dụ về tính năng ghi nhớ hành động là Javac từ quy tắc Java, CppCompile từ quy tắc C++ và AndroidManifestMerger từ 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 trên 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ư cấu phần phần mềm Maven, gói npm, mô-đun Go hoặc Thùng Cargo. Các mô-đun cấu thành xương số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 một kho lưu trữ hỗ trợ với một tệp MODULE.bazel ở thư mục 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 của mô-đun đó và nhiều dữ liệu khác, bao gồm cả dữ liệu đăng ký chuỗi công cụ và đầu vào phần mở rộng của mô-đun.

Siêu dữ liệu mô-đun được lưu trữ trong 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 repos bằng cách đọc dữ liệu đầu vào từ trên biểu đồ phần phụ thuộc mô-đun và gọi các quy tắc kho lưu trữ. Tiện ích mô-đun có các 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 Internet, thực hiện 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à được triển khai trong Java. Các quy tắc như vậy xuất hiện trong tệp .bzl dưới dạng hàm trong mô-đun gốc (ví dụ: native.cc_library hoặc native.java_library). 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. Dùng để tách các kết quả 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 quá trình tạo mục tiêu. Quy tắc đặt kết quả thông thường trong "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 có 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 và 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

Thư mục dành riêng cho người dùng để lưu trữ các kết quả của Bazel. Tên thư mục được lấy từ tên người dùng trên hệ thống của người dùng. Ngăn chặn tình trạng xung đột với 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 tại cùng một thời điểm. Chứa các thư mục con tương ứng với đầu ra bản dựng của các không gian làm việc riêng lẻ, còn gọi là cơ sở đầu ra.

Gói

Tập hợp các mục tiêu được xác định bằng tệp BUILD. Tên gói là đường dẫn của tệp BUILD tương ứng với thư mục gốc kho lưu trữ. 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 dùng trong các 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. Điều này bao gồm máy mà Bazel chạy trên (nền tảng "máy chủ"), các máy xây dựng công cụ thực thi trên các nền tảng ("thực thi") và các mục tiêu máy được tạo 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 cần truyền giữa các mục tiêu quy tắc theo các mối quan hệ phần phụ thuộc. Thường thì dữ liệu này chứa các thông tin như các tuỳ 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 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ỹ. Một ví dụ về 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 để 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 hiệu ứng của select(), cờ bản dựng, cấu phần phần mềm hay tạo hành độ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ữ

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 ngắn thành chỉ kho lưu trữ.

Tệp đánh dấu ranh giới repo có thể là MODULE.bazel (báo hiệu rằng kho lưu trữ này đại diện cho một mô-đun Bazel), REPO.bazel hoặc trong ngữ cảnh cũ, WORKSPACE hoặc WORKSPACE.bazel. Mọi tệp đánh dấu ranh giới kho lưu trữ đều 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ữ nơi chạy lệnh Bazel hiện tại.

Các 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 phần mở rộng của mô-đun. Bạn có thể tìm nạp các tệp theo yêu cầu đến một vị trí "ma thuật" được xác định trước trên ổ đĩa.

Mỗi kho lưu trữ có một tên chính tắc không đổi và duy nhất và có thể khác nhau về tên gốc khi được xem từ các kho lưu trữ khác.

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

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

Một bộ nhớ đệm dùng chung có thể định địa chỉ nội dung mà Bazel tải xuống cho các bản dựng, có thể chia sẻ trên các 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 được dùng để lưu các tệp vào bộ nhớ đệm được tải xuống thông qua các quy tắc 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ủa tệp được chỉ định để tải xuống.

Quy tắc kho lưu trữ

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

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

Khả năng tái tạo

Thuộc tính của một bản dựng hoặc bài kiểm thử mà tập hợp các đầ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 vào mọi thời điểm, 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 ngụ ý rằng kết quả 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 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à chuyển thông tin đến các mục tiêu quy tắc khác. Từ góc độ 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 môi trường và ngôn ngữ lập trình 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, quy tắc nhắm mục tiêu sẽ truyền 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ý hành động mô tả cách tạo cấu phần phần mềm đầu ra của chúng. Những hành động 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à bản sao của quy tắc. Trái ngược 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 Run

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. Trường hợp phổ biến nhất là tệp thực thi là đầu ra có thể thực thi của quy tắc kiểm thử, và các tệp chạy là các phần phụ thuộc dữ liệu 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 tệp 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

Hộp cát

Đây là một kỹ thuật để tách riêng một hành động đang chạy bên trong gốc thực thi bị hạn chế và tạm thời, giúp đảm bảo hành động đó không đọc các dữ liệu đầu vào chưa được khai báo hoặc ghi dữ liệu đầu ra chưa được khai báo. Hộp cát giúp cải thiện đáng kể độ mạnh, nhưng thường làm tiêu tốn 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, tuỳ chọn này không quan trọng nhưng trên macOS, hộp cát có thể không sử dụng được.

Khung trời

Skyframe là khung đánh giá song song, hữu ích và tăng dần cốt lõi của Bazel.

Dập kim loại

Một tính năng giúp 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ụ: API này có thể được dùng để kiểm soát nguồn, thời gian tạo bản 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 con dấu.

Starlark

Ngôn ngữ mở rộng để viết quy tắcmacro. Một tập hợp con Python bị hạn chế (về cú pháp và ngữ pháp) nhằm phục vụ mục đích định cấu hình và đạt 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ó tên là Skylark.

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

Cờ khởi động

Tập hợp cờ được chỉ định giữa bazellệnh, ví dụ: bản dựng --host_jvm_debug bazel. Những cờ này sửa đổi cấu hình của máy chủ Bazel, vì vậy, bất kỳ thay đổi nào đối với cờ khởi động đều dẫn đến việc 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 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 được (như cc_binary) hoặc có thể kiểm thử (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 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 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. 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 mọi gói luôn được coi là mục tiêu 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 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

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 ra 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.

Hình mở khoá 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ả mục tiêu quy tắc), :* (tất cả quy tắc + mục tiêu tệp), ... (gói hiện tại và tất cả các gói con theo cách đệ quy). Có thể sử dụng kết hợp, chẳng hạn như //...:* có nghĩa là tất cả mục tiêu tệp và quy tắc trong mọi gói theo cách đệ quy từ gốc của không gian làm việc.

Kiểm thử

Tạo thực thể cho mục tiêu quy tắc từ 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 sau khi hoàn tất tệp thực thi có nghĩa là 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 pháp thu thập kết quả kiểm thử) được nêu rõ trong Test Bách khoa toàn thư.

Chuỗi công cụ

Một bộ công cụ để tạo kết quả 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ụ 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ụ dành cho cùng một ngôn ngữ. Việc chọn đúng chuỗi công cụ 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 còn //: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 mục tiêu cấp cao nhất và mục tiêu không 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 bạn có thể sửa đổi bằng cách chuyển đổi cho các mục tiêu không cấp cao nhất.

Transition

Á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ó một trường hợp sử dụng chuyển đổi phổ biến là chuyển đổi phân tách, trong đó một số phần nhất định 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ể tạo một APK Android với 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 hiệu ứng chuyển đổi phân tách trong một bản dựng.

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

Xem thêm: Tài liệu về khả năng hiển thị

Workspace

Môi trường dùng chung của tất cả các lệnh Bazel đều 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" đã kết hợp với nhau. "Không gian làm việc" thường được dùng để chỉ kho lưu trữ chính, và đôi khi còn được dùng làm từ đồng nghĩa với "kho lưu trữ". Bạn nên tránh sử dụng kiểu dữ liệu này để đảm bảo sự rõ ràng.