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

Báo cáo vấn đề Xem nguồn Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Hành động

Lệnh để chạy trong quá trình xây dựng, ví dụ: lệnh gọi đến trình biên dịch 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 siêu dữ liệu như đối số dòng lệnh, khoá hành động, biến môi trường và 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ữ 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. 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 tăng dần 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 khởi động lại máy chủ Bazel.

Biểu đồ hành động

Biểu đồ trong bộ nhớ của các hành độngcấu phần phần mềm mà các hành động 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 sử 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 qua các hành động của bản dựng. Điều này giúp bạn có thể phân tích cách quy tắc bản dựng được chuyển đổi thành các bản dựng công việc thực tế.

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 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 hành động 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 đồ mục tiêu được chỉ định trong tệp BUILD để tạo biểu đồ thao tác trong bộ nhớ, xác định thứ tự 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 được tạo. 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.

Một 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.

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

Tỷ lệ

Cơ chế cho 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 để di chuyển lên một cạnh phần phụ thuộc đến B và chạy các hành động bổ sung trong B để tạo và thu thập các tệp đầu ra bổ sung. Các 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 phương diện. Được tạo bằng hàm API bản dựng Starlark aspect(). Ví dụ: có thể dùng để tạo siêu dữ liệu cho 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

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

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

Để một khía cạnh A áp dụng trên khía cạnh B, 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 một quy tắc, dùng để thể hiện thông tin bản dựng theo mục tiêu. Ví dụ: srcs, depscopts, tương ứng khai báo tệp nguồn, phần phụ thuộc và 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ể 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, đồng thời xác định các nhóm tuỳ chọn phổ biến mà sau đó có thể được đặt cùng nhau trên dòng lệnh Bazel bằ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, trên mỗi không gian làm việc, trên 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.

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.

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

Tệp BUILD.bazel

Xem Tệp BUILD. Được ưu tiên hơn tệp BUILD trong cùng một 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 hàm load().

Tạo biểu đồ

Biểu đồ phần phụ thuộc mà Bazel tạo và duyệt qua để tạo 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 chỉnh khi tất 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.

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

Một phần cấu hình do Starlark xác định. Hiệu ứng chuyển đổi 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 hiển thị 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 chậm hơn 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 tự động khởi động một máy chủ trong nền trên máy cục bộ để thực thi lệnh Bazel. Máy chủ vẫn tồn tại 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 rõ ràng thông qua việc tắt bazel). Việc chia Bazel thành một máy chủ và một ứng dụng giúp phân bổ 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

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, các thay đổi về giá trị cờ có thể khiến Bazel vô hiệu hoá 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 nằm ngoài định nghĩa quy tắc ảnh hưởng đến cách quy tắc tạo 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. Hiệu ứng 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ấ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à lãng phí 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 đã đị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 được đị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 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 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ì bản dựng đó 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 bản dựng phản ánh trung thực trạng thái của các đầu vào bắc cầu. Để tạo ra các bản dựng chính xác, Bazel cố gắng khép kín, có thể tái tạo và giúp phân tích bản dựng cũng như thực thi hành động mang tính quyết định.

Phần phụ thuộc

Cạnh có hướng giữa hai mục tiêu. //:foo mục tiêu có phần phụ thuộc mục tiêu trên //:bar mục tiêu nếu các 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 một cấu phần phần mềm đầu vào do một hành động trong //:bar tạo ra.

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

Depset

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 nhóm phần phụ thuộc diễn ra hiệu quả về thời gian và không gian, vì thường thì các nhóm 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 nhóm phần phụ thuộc khác vì lý do hiệu quả không gian. Việc triển khai quy tắc không được "làm phẳng" các nhóm phần phụ thuộc bằng cách chuyển đổi các nhóm này 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 nhóm phần phụ thuộc lớn sẽ tiêu tốn rất nhiều bộ nhớ. Còn được gọi là nhóm lồng nhau 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 của ổ đĩa

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

Distdir

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 kho lưu trữ. Cho phép các bản dựng chạy hoàn toàn ngoại tuyến.

Thực thi động

Chiến lược thực thi chọn giữa phương thức thực thi cục bộ và từ xa dựa trên nhiều phương pháp phỏng đoán và 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 trên máy (ví dụ: liên kết) và một số hành động khác được thực thi nhanh hơn từ xa (ví dụ: biên dịch song song cao). Chiến lược thực thi linh động có thể cung cấp thời gian xây dựng tăng dần và sạch 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 hành động trong biểu đồ hành động đượ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ấ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, độ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 được đặt trong hộp cát. Nội dung của 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. 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 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 một rừng đường liên kết tượng trưng của các thư mục đại diện cho việc đóng gói 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 được coi là kín nếu không có yếu tố bên ngoài nào ảnh hưởng đến các hoạt động xây dựng và kiểm thử 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 kín thường không cho phép truy cập mạng vào các thao tác, 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 hạt 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 tạo bản 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 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à đối lập 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 (hiển thị) 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 trường hợp, bạn có thể bỏ qua một số phần của 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 gói. Macro và một số hàm nhất định 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 một biểu đồ mục tiêu.

Macro cũ

Một phiên bản macro được khai báo dưới dạng hàm Starlark thông thường và chạy dưới dạng hiệu ứ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 tệp này có thể thuận tiện, nhưng cũng có thể khó đọc, ghi và sử dụng hơn. Một macro cũ có thể đột ngột thay đổi đối số hoặc không thành công khi được cung cấp một đối số select() hoặc đối số được nhập 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

Cơ chế để kết hợp nhiều nội dung khai báo mục tiêu quy tắc với nhau trong một Starlark có thể gọi. 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 đến các phần khai báo mục tiêu quy tắc cơ bản trong giai đoạn tải.

Có hai phiên bản: 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ể sử dụng câu thần chú làm giá trị nhận dạng cho các lựa chọn chiến lược tạo bản sao. Một số ví dụ về câu thần chú hành động là Javac từ các quy tắc Java, CppCompile từ các 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 hộp Cargo. Mô-đun là thành phần cốt lõi 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 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 và nhiều dữ liệu khác, bao gồm cả thông tin đăng ký chuỗi công cụ và dữ liệu đầ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: Mô-đun Bazel

Tiện ích mô-đun

Một đoạn logic có thể chạy để tạo kho lưu trữ bằng cách đọc dữ liệu đầu vào từ biểu đồ phần phụ thuộc mô-đun và gọi quy tắc kho lưu trữ. Tiện ích mô-đun có các chức năng tương tự như quy tắc repo, cho phép 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

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 tệp .bzl dưới dạng 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 Starlark.

Cơ sở đầu ra

Thư mục dành riêng cho không gian làm việc để lưu trữ các tệp đầu ra Bazel. Dùng để tách biệt đầ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. Quy tắc đặt các đầ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 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. 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).

Xuất thư mục gốc của người dùng

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 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 đầu ra 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 so với thư mục gốc của 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 các tệp BUILD, từ đó tạo thành một hệ phân cấp gói.

Nhóm gói

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

Nền tảng

"Loại máy" có liên quan đến một bản dựng. Điều này bao gồm máy 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 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 để truyền giữa các đích quy tắc dọc theo các mối quan hệ phần phụ thuộc. Thông thường, tệp này chứa thông tin như các tuỳ chọn trình biên dịch, tệp đầu ra hoặc nguồn 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 depsets để 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

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: truy vấn, 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 hoặc tạo hành động.

Xem thêm: Cách 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 điểm đánh dấu ranh giới ở thư mục 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 điểm đá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 ngữ cảnh cũ, WORKSPACE hoặc WORKSPACE.bazel. Mọi tệp điểm đá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ữ đang chạy lệnh Bazel hiện tại.

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

Mỗi kho lưu trữ có một tên chính tắc duy nhất, không đổi và có thể có tên hiển thị khác khi 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 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 cho các bản dựng, có thể chia sẻ trên không gian làm việc. Bật bản dựng ngoại tuyến sau khi tải xuống lần đầu. Thường được dùng để lưu các tệp đã tải xuống qua quy tắc của kho lưu trữ như http_archive và API quy tắc của kho lưu trữ như repository_ctx.download vào bộ nhớ đệm. Các tệp chỉ được lưu vào bộ nhớ đệm nếu tổng kiểm tra SHA-256 của 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 repo. Bazel gọi các quy tắc kho lưu trữ nội bộ để xác định các kho lưu trữ được hỗ trợ bởi mô-đun hoặc có thể được gọi bằng tiện ích mô-đun. Các quy tắc repo có thể truy cập Internet hoặc thực hiện I/O tệp; quy tắc repo phổ biến nhất là http_archive để tải một tệp 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 của kho lưu trữ

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à một tập hợp 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 dữ liệu đầ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ả 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ừ 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 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. Theo quan điểm của 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ữ và môi trường lập trình mới.

Các quy tắc được tạo bản sao để 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 giao tiếp thông tin với các phần phụ thuộc hạ nguồn dưới dạng 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ác 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à một 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 có thể thực thi. Thông thường, tệp thực thi là đầu ra thực thi của quy tắc kiểm thử và tệp chạy là các phần phụ thuộc dữ liệu thời gian chạy của quy tắc 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 tệp chạy 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 chạy

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 dữ liệu đầu vào chưa khai báo hoặc ghi dữ liệu đầu ra chưa khai báo. Môi trường hộp cát cải thiện đáng kể mức độ kín đáo, nhưng thường có chi phí 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 bạn không sử dụng được hộp cát.

Skyframe

Skyframe là khung đánh giá tăng dần, 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ông tin bổ sung vào cấu phần phần mềm do Bazel tạo. Ví dụ: bạn có thể sử dụng thông tin này cho việc 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 môi trường hoặc không gian làm việc cho bản phát hành. Bật thông qua cờ --workspace_status_commandquy tắc hỗ trợ thuộc tính dấu.

Starlark

Ngôn ngữ mở rộng để viết quy tắcmacro. Một tập hợp con bị hạn chế của Python (về cú pháp và ngữ pháp) nhằm mục đích cấu hình và để đạt đượ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 (chẳng hạn như không có định nghĩa hàm def), trước đây 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 chỉ định giữa bazellệnh, ví dụ: bản dựng bazel --host_jvm_debug. 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 sẽ 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 phiên bản macro được khai báo bằng giản đồ thuộc tính giống như quy tắc, cho phép ẩn mục tiêu được khai báo nội bộ khỏi gói của chính chúng và thực thi mẫu đặt tên có thể dự đoán được trên các mục tiêu mà macro khai báo. Được thiết kế để tránh một số vấn đề trong 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 thẻ. 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 từ góc độ của người dùng cuối.

Một mục tiêu được khai báo bằng cách tạo bản sao của 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ử được (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 thuộc tính (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. 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 bất kỳ gói nào 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 đượ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

Biểu đồ trong bộ nhớ của các mục tiêu và phần phụ thuộc của các mục tiêu đó. Đượ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ả 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). Có thể được sử dụng kết hợp, ví dụ: //...:* có nghĩa là tất cả các mục tiêu tệp và quy tắc 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.

Thử nghiệm

Mục tiêu của quy tắc được tạo bản sao từ các quy tắc kiểm thử, 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 chương trình 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ư 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 hoặc/và trình tìm lỗi mã nguồn. 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 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 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 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 mục tiêu cấp cao nhất, nhưng có thể được sửa đổi bằng quá trình chuyển đổi cho 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 bản sao từ cùng một quy tắc. Một cách sử dụng phổ biến của hiệu ứng chuyển đổi là hiệu ứng 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â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 tệp APK Android 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.

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 dạng cây

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 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 xây dựng: mức độ hiển thị mục tiêu để kiểm soát xem các mục tiêu khác có thể phụ thuộc vào mục tiêu hay không; và mức độ 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ông thường "mức độ hiển thị" sẽ đề cập đến mức độ hiển thị mục tiêu.

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

Workspace

Môi trường mà tất cả các lệnh Bazel dùng chung 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 "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 rõ ràng.