Hành động
Một lệnh chạy trong quá trình tạo bản dựng, chẳng hạn như lệnh gọi đến trình biên dịch nhận 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 đầu ra. Bao gồm siêu dữ liệu như đối số dòng lệnh, phím hành động, môi trường và các cấu phần phần mềm đầu vào/đầu ra được khai báo.
Xem thêm: Tài liệu về quy tắc
Bộ nhớ đệm của thao tác
Bộ nhớ đệm trên ổ đĩa lưu trữ ánh xạ các hành động đã thực thi với đầu ra mà họ tạo ra. Khoá bộ nhớ đệm còn gọi là khoá hành động. Đáp thành phần cốt lõi cho mô hình mức độ gia tăng của Bazel. Bộ nhớ đệm được lưu trữ trong thư mục cơ sở đầu ra và do đó vẫn tồn tại khi máy chủ Bazel khởi động lại.
Biểu đồ hành động
Một biểu đồ trong bộ nhớ về các hành động và cấu phần phần mềm
các hành động này sẽ đọc và tạo. Biểu đồ này có thể bao gồm các cấu phần phần mềm tồn tại dưới dạng
tệp nguồn (ví dụ: trong hệ thống tệp) cũng như được tạo
cấu phần phần mềm trung gian/cuối cùng không được đề cập trong tệp BUILD
. Được sản xuất
trong giai đoạn phân tích và được dùng trong quá trình thực thi
.
Truy vấn biểu đồ hành động (truy vấn)
Một công cụ truy vấn có thể truy vấn qua các hành động tạo bản dựng. Điều này mang đến khả năng phân tích cách các quy tắc xây dựng chuyển thành mà các bản dựng công việc thực tế thực hiện.
Phím hành động
Khoá lưu vào bộ nhớ đệm của một thao tác. Được tính toán dựa trên siêu dữ liệu hành động có thể bao gồm lệnh được thực thi trong hành động, cờ của trình biên dịch, thư viện vị trí 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á một cách quyết định các hành động riêng lẻ.
Giai đoạn phân tích
Giai đoạn thứ hai của quá trình tạo bản dựng. Xử lý biểu đồ mục tiêu
được chỉ định trong các tệp BUILD
để tạo ra một hành động trong bộ nhớ
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 trong đó quy tắc
đánh giá các lượt triển khai.
Cấu phần phần mềm
Tệp nguồn hoặc tệp đã tạo. Đây cũng có thể là thư mục tệp, 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 thao tác, nhưng chỉ được tạo bởi tối đa một hành động.
Cấu phần phần mềm tương ứng với một mục tiêu tệp có thể được xử lý bằng .
Tỷ lệ
Cơ chế mà các quy tắc tạo ra các 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, thì người ta có thể áp dụng một khía cạnh trên
A truyền lên cạnh phụ thuộc đến B và chạy các thao tác khác 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à sử dụng lại giữa các mục tiêu yêu cầu cùng một khía cạnh. Được tạo bằng
aspect()
Starlark Build API (API Bản dựng Starlark). Ví dụ: Có thể dùng để tạo
siêu dữ liệu cho IDE và tạo các thao tác để tìm lỗi mã nguồn.
Xem thêm: Tài liệu về các khía cạnh
Góc nhìn
Một cơ chế tổng hợp theo đó các khía cạnh có thể được áp dụng cho kết quả
của các khía cạnh khác. Ví dụ: một khía cạnh tạo ra thông tin để
Bạn có thể áp dụng IDE lên trên một khung hình tạo ra tệp .java
từ một
proto.
Để một khung hình A
áp dụng bên trên khung hình B
, những nhà cung cấp mà
B
quảng cáo trong thuộc tính provides
phải khớp với thông tin mà A
khai báo trong tệp required_aspect_providers
.
Thuộc tính
Tham số cho quy tắc, dùng để thể hiện thông tin bản dựng theo từng mục tiêu.
Ví dụ: srcs
, deps
và copts
, lần lượt 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. Phần tử cụ thể
các thuộc tính 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 khi khởi động
cờ và cờ lệnh cũng như để xác định các cờ phổ biến
các nhóm tuỳ chọn mà sau đó có thể được thiết lập cùng nhau trên dòng lệnh Bazel bằng cách sử dụng
cờ --config
. Bazel có thể kết hợp các chế độ cài đặt từ nhiều tệp bazelrc
(trên toàn hệ thống, theo không gian làm việc, mỗi người dùng hoặc từ một vị trí tuỳ chỉnh) và
Tệp bazelrc
cũng có thể nhập chế độ cài đặt từ các tệp bazelrc
khác.
Gói linh hoạt
Phiên bản nội bộ của Bazel. Hệ thống xây dựng chính của Google dành cho kho lưu trữ đơn âm.
Tệp BUILD
Tệp BUILD
là tệp cấu hình chính cho Bazel biết phần mềm nào
đầu ra để xây dựng, các phần phụ thuộc là gì cũng như cách xây dựng chúng. Bazel sản xuất
lấy tệp BUILD
làm đầu vào và dùng tệp này để tạo biểu đồ các phần phụ thuộc
và để suy ra các hành động phải được hoàn tất để tạo ra các bản dịch trung gian và cuối cùng
đầu ra phần mềm. Tệp BUILD
đánh dấu một thư mục và mọi thư mục con không
chứa một tệp BUILD
dưới dạng một gói và có thể chứa
mục tiêu do quy tắc tạo. Bạn cũng có thể đặt tên tệp
BUILD.bazel
.
Tệp BUILD.bazel
Xem phần Tệp BUILD
. Được ưu tiên hơn tệp BUILD
trong cùng một tệp
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 dữ liệu này vào tệp BUILD
bằng cách sử 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 để tạo một bản dựng. Bao gồm các nút như mục tiêu, đã định cấu hình mục tiêu, hành động và cấu phần phần mềm. Đáp bản dựng được coi là hoàn tất khi tất cả cấu phần phần mềm mà trên đó một tập hợp mục tiêu đã yêu cầu đề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. Chuyển đổi có thể thiết lập chế độ cài đặt bản dựng để thay đổi giá trị của một đồ thị con . Nếu hiển thị cho người dùng dưới dạng một cờ dòng lệnh, còn được gọi là cờ bản dựng.
Dọn sạch bản dựng
Một bản dựng không sử dụng kết quả của các bản dựng trước đó. Quá trình này thường chậm hơn so với 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 rõ ràng 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áy chủ nền trên
máy cục bộ để thực thi các lệnh Bazel. Máy chủ vẫn tồn tại qua
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
bazel tắt). Chia Bazel thành một máy chủ và ứng dụng khách giúp phân bổ giá trị của JVM
thời gian khởi động và hỗ trợ các bản dựng gia tăng nhanh hơn
vì biểu đồ hành động vẫn còn 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 run
và bazel 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>
). 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à các tên khác. Cờ thường được dùng cho cấu hình
vì vậy, việc thay đổi giá trị gắn cờ có thể khiến Bazel vô hiệu hoá trong bộ nhớ
biểu đồ và bắt đầu lại giai đoạn phân tích.
Cấu hình
Thông tin bên ngoài các định nghĩa về quy tắc mà tác động đến cách tạo quy tắc 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à bản dựng dòng lệnh cờ. Quá trình chuyển đổi có thể tạo ra thêm các cấu hình, chẳng hạn như 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ấu hình của
mục tiêu thực sự cần thiết. Ví dụ: nếu bạn tạo tệp nhị phân Java //:j
bằng C++
phần phụ thuộc //:c
, thì sẽ lãng phí nếu đưa giá trị của --javacopt
vào phần phụ thuộc
cấu hình của //:c
vì việc thay đổi --javacopt
sẽ làm hỏng C++ một cách không cần thiết
khả năng lưu vào bộ nhớ đệm của bản dựng.
Truy vấn được định cấu hình (cquery)
Công cụ truy vấn truy vấn qua đã định cấu hình
(sau giai đoạn phân tích
hoàn tất). Tức là select()
và cờ bản dựng (chẳng hạn như
--platforms
) được phản ánh chính xác trong kết quả.
Xem thêm: tài liệu về cquery
Mục tiêu đã thiết lập
Kết quả của việc đánh giá mục tiêu bằng
cấu hình. Giai đoạn phân tích tạo ra
điều này bằng cách kết hợp các tuỳ chọn của bản dựng với các mục tiêu cần được xây dựng.
Ví dụ: nếu //:foo
xây dựng cho hai cấu trúc khác nhau trong cùng một cấu trúc
bản dựng này có hai mục tiêu được định cấu hình: <//:foo, x86>
và <//:foo, arm>
.
Tính chính xác
Một bản dựng là chính xác khi kết quả của nó phản ánh một cách trung thực trạng thái của bản dựng đầu vào bắc cầu. Để có được các bản dựng phù hợp, Bazel cố gắng trở nên tính kín, có thể tái tạo và tạo bản dựng phân tích và thực thi hành động thuật toán tất định.
Phần phụ thuộc
Cạnh trực tiếp giữa hai mục tiêu. //:foo
mục tiêu có một mục tiêu
phần phụ thuộc trên mục tiêu //:bar
nếu giá trị thuộc tính của //:foo
chứa phần tử
tham chiếu đến //:bar
. //:foo
có phần phụ thuộc hành động trên //:bar
nếu một
hành động trong //:foo
phụ thuộc vào một cấu phần phần mềm đầu vào do
trong //:bar
.
Trong một số ngữ cảnh nhất định, thuộc tính này cũng có thể đề cập đến một phần phụ thuộc bên ngoài; xem mô-đun.
Không tải được
Một cấu trúc dữ liệu để thu thập dữ liệu về các phần phụ thuộc bắc cầu. Tối ưu hoá việc hợp nhất các phần tách rời tốn hiệu quả về thời gian và không gian, vì thông thường phải có phần phụ thuộc rất lớn (hàng trăm nghìn tệp). Triển khai cho tham chiếu đệ quy đến các phần phụ thuộc khác để đảm bảo hiệu quả không gian. Quy tắc các triển khai không được "làm phẳng" phần phụ thuộc bằng cách chuyển đổi chúng thành danh sách trừ khi quy tắc nằm ở cấp cao nhất trong biểu đồ bản dựng. Việc làm phẳng phần tách lớn phát sinh mức tiêu thụ bộ nhớ rất lớn. Còn được gọi là tập hợp lồng nhau trong thuộc tính nội bộ của Bazel trong quá trình triển khai.
Xem thêm: Tài liệu về phần phụ thuộc
Bộ nhớ đệm của ổ đĩa
Một kho lưu trữ blob cục bộ trên ổ đĩa cho tính năng lưu vào bộ nhớ đệm từ xa. Có thể dùng trong kết hợp với kho lưu trữ blob thực tế từ xa.
Cách xa
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 kho lưu trữ. Cho phép các bản dựng chạy hoàn toàn khi không có mạng.
Thực thi động
Chiến lược thực thi chọn giữa thực thi cục bộ và thực thi từ xa dựa trên khác nhau và sử dụng kết quả thực thi của phương pháp thử nghiệm thành công nhanh hơn . Một số thao tác được thực thi cục bộ nhanh hơn (ví dụ: liên kết khác nhanh hơn từ xa (ví dụ: có thể tải song song cao độ) biên dịch). Chiến lược thực thi linh hoạt có thể mang lại kết quả tốt nhất có thể thời gian xây dựng tăng dần và rõ ràng.
Giai đoạn thực thi
Giai đoạn thứ ba của quá trình tạo bản dựng. Thực thi các hành động trong hành động biểu đồ được tạo trong giai đoạn phân tích. Các thao tác này gọi 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 những 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 cơ sở dữ liệu đầu ra của không gian làm việc
Thư mục nơi thực thi các hành động cục bộ
bản dựng không có hộp cát. Nội dung thư mục chủ yếu là liên kết tượng trưng
của cấu phần phần mềm nhập từ không gian làm việc. Gốc thực thi cũng
chứa các đường liên kết tượng trưng đến các kho lưu trữ bên ngoài dưới dạng các dữ liệu đầu vào khác và bazel-out
thư mục để lưu trữ đầu ra. Được chuẩn bị trong giai đoạn tải
bằng cách tạo rừng liên kết tượng trưng gồm các thư mục đại diện cho nút bắc cầu
đóng các gói mà bản dựng phụ thuộc vào. Có thể truy cập bằng bazel info
execution_root
trên dòng lệnh.
Tệp
Hãy xem Artifact.
Hermeticity
Một bản dựng có tính chất ẩn nếu không có tác động từ bên ngoài nào đến bản dựng và quá trình kiểm thử 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 khép kín thường không cho phép kết nối mạng quyền truy cập vào 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 cố định và múi giờ, hạn chế quyền truy cập vào các biến môi trường và sử dụng số ngẫu nhiên cố định cho trình tạo số ngẫu nhiên
Bản dựng tăng dần
Một bản dựng tăng dần sẽ sử dụng lại kết quả của các bản dựng trước đó để giảm thời gian xây dựng và mức sử dụng tài nguyên. Kiểm tra phần phụ thuộc và lưu vào bộ nhớ đệm nhằm mục đích tạo ra cho loại bản dựng này. Bản dựng tăng dần ngược lại với bản dựng sạch bản dựng.
Hãng nhạc
Giá trị nhận dạng của 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
vào thư mục chứa tệp BUILD
khai báo
target (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 hình, các phần của thông báo này
cú pháp có thể được bỏ qua.
Xem thêm: Nhãn
Giai đoạn tải
Giai đoạn đầu tiên của một bản dựng, trong đó Bazel thực thi các tệp BUILD
để
tạo gói. Macro và một số chức năng nhất định như
glob()
được đánh giá trong giai đoạn này. Xen kẽ với pha thứ hai của
giai đoạn phân tích để tạo mục tiêu
biểu đồ.
Macro
Cơ chế soạn nhiều nội dung khai báo mục tiêu quy tắc cùng nhau theo
một hàm Starlark. Cho phép sử dụng lại nội dung khai báo quy tắc chung
trên các tệp BUILD
. Đã mở rộng đến mục tiêu quy tắc cơ bản
khai báo trong giai đoạn tải.
Xem thêm: Tài liệu macro
Ghi nhớ
Một chuỗi ngắn mà con người có thể đọc được do tác giả quy tắc chọn để có thể hiểu nhanh
hành động trong quy tắc đang làm gì. Hệ thống ghi nhớ có thể được dùng như
giá trị nhận dạng cho các lựa chọn chiến lược spawn. Một số ví dụ về hệ thống ghi nhớ hành động
là Javac
từ các quy tắc Java, CppCompile
từ các quy tắc C++ và
AndroidManifestMerger
trong các quy tắc của Android.
Mô-đun
Một dự án Bazel có thể có nhiều phiên bản, mỗi phiên bản đều có thể 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, chẳng hạn như cấu phần phần mềm Maven, gói npm, Chuyển đến mô-đun hoặc hộp Hàng hoá. Các mô-đun tạo thành xương sống của hệ thống bên ngoài của Bazel hệ thống quản lý phụ thuộc.
Mỗi mô-đun được hỗ trợ bởi một kho lưu 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 mô-đun 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 chuỗi công cụ
lượt đăng ký và đầu vào phần mở rộng mô-đun.
Siêu dữ liệu mô-đun được lưu trữ trong sổ đăng ký Bazel.
Xem thêm: Mô-đun Bazel
Phần mở rộng mô-đun
Một đoạn logic có thể chạy để tạo repos bằng cách đọc đầu vào từ trên biểu đồ phần phụ thuộc mô-đun và gọi kho lưu trữ . Tiện ích mô-đun có các tính năng tương tự như 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: Phần mở rộng mô-đun
Quy tắc gốc
Các quy tắc được tích hợp vào Bazel và triển khai trong Java. Những 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 (đối với
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 quảng cáo gốc) được tạo bằng Starlark.
Cơ sở dữ liệu đầu ra
Một thư mục dành riêng cho không gian làm việc để lưu trữ các tệp đầu ra của Bazel. Đã dùng để tách biệt các đầu ra từ cây nguồn của không gian làm việc (mục chính kho lưu trữ). 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
. Rules (Quy tắc) đặt các kết quả thông thường vào "nhóm đầu ra mặc định"
(ví dụ: tệp .jar
của java_library
, .a
và .so
cho cc_library
mục tiêu). 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
).
Thư mục gốc của người dùng đầu ra
Một thư mục dành riêng cho người dùng để lưu trữ các dữ liệu đầu ra của Bazel. Tên thư mục là lấy từ tên người dùng hệ thống của người dùng. Ngăn chặn xung đột tệp đầu ra nếu nhiều người dùng đang xây dựng cùng một dự án trên hệ thống cùng một lúc. Chứa các thư mục con tương ứng với kết quả của bản dựng của từng không gian làm việc riêng lẻ, còn được gọi là cơ sở đầu ra.
Gói
Tập hợp mục tiêu do tệp BUILD
xác định. Đáp
tên gói là đường dẫn của tệp BUILD
so với kho lưu trữ
thư mục gốc. Một gói có thể chứa gói con hoặc thư mục con chứa 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 visibility
giá trị thuộc tính.
Nền tảng
Một "loại máy" liên quan đến bản dựng. Điều này bao gồm cả máy Bazel chạy trên đó (nền tảng "máy chủ"), các công cụ xây dựng của máy thực thi trên các nền tảng "thực thi"), và các mục tiêu máy móc được xây dựng cho ("nền tảng mục tiêu").
Nhà cung cấp
Giản đồ mô tả một đơn vị thông tin cần truyền giữa
mục tiêu quy tắc cùng với mối quan hệ phụ thuộc. Thông thường, chỉ số này
chứa thông tin như tuỳ chọn trình biên dịch, tệp nguồn bắc cầu hoặc tệp đầu ra,
và tạo siêu dữ liệu. Thường được dùng cùng với phần phụ thuộc để
lưu trữ hiệu quả dữ liệu chuyển đổi tích luỹ. Ví dụ về trình cung cấp tích hợp sẵn
là DefaultInfo
.
Xem thêm: Tài liệu về nhà cung cấp
Cụm từ tìm kiếm (khái niệm)
Quá trình phân tích biểu đồ bản dựng để hiểu thuộc tính target và cấu trúc phần phụ thuộc. Bazel hỗ trợ 3 các biến thể truy vấn: query, cquery và cụm từ tìm kiếm.
truy vấn (lệnh)
Công cụ truy vấn hoạt động sau khi tải bản dựng
pha biểu đồ mục tiêu. Việc này tương đối nhanh,
nhưng không thể phân tích tác độ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: Hướng dẫn truy vấn, Tài liệu tham khảo về truy vấn
Kho lưu trữ
Cây thư mục có một tệp đánh dấu ranh giới ở gốc chứa nguồn có thể sử dụng trong bản dựng Bazel. Thường được rút ngắn thành kho lưu trữ.
Tệp đánh dấu ranh giới của kho lưu trữ 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
. Bất kỳ tệp đánh dấu ranh giới kho lưu trữ nào cũng sẽ biểu thị ranh giới của
repo; 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 trong đó.
Kho lưu trữ bên ngoài được xác định bằng cách chỉ định các mô-đun trong MODULE.bazel
tệp hoặc gọi quy tắc kho lưu trữ trong mô-đun
tiện ích. Bạn có thể tìm nạp các mã này theo yêu cầu và được xác định trước
"kỳ diệu" vị trí trên đĩa.
Mỗi kho lưu trữ có một tên chuẩn riêng, không đổi và có thể khác nhau tên rõ ràng 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 của kho lưu trữ
Một bộ nhớ đệm chia sẻ nội dung có thể định địa chỉ của các tệp mà Bazel tải xuống để tạo 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
tải xuống ban đầu. Thường dùng để lưu các tệp được tải xuống qua kho lưu trữ vào bộ nhớ đệm
các quy tắc như http_archive
và 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 giá trị tổng kiểm SHA-256 của chúng là
đượ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 quy tắc kho lưu trữ.
Các quy tắc kho lưu trữ được Bazel gọi nội bộ để xác định các kho lưu trữ được hỗ trợ
mô-đun hoặc có thể được gọi qua phần mở rộng mô-đun.
Quy tắc repo có thể truy cập vào Internet hoặc thực hiện thao tác I/O tệp; kho lưu trữ phổ biến nhất
quy tắc là http_archive
để tải xuống tệp lưu trữ chứa các tệp nguồn từ
Internet.
Xem thêm: Tài liệu về quy tắc Repo
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 các dữ liệu đầu vào cho bản dựng hoặc kiểm thử sẽ luôn tạo ra cùng một tập hợp đầu ra mọi lúc, bất kể thời gian, phương thức, hoặc môi trường. Lưu ý rằng điều này không nhất thiết ngụ ý rằng dữ liệu đầu ra chính xác hoặc 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
, một quy tắc bao gồm
một tập hợp các thuộc tính và logic hộp đen. Logic này cho biết
nhắm mục tiêu đến 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 các tác giả .bzl
, quy tắc là
cách chính để mở rộng Bazel nhằm hỗ trợ các ngôn ngữ lập trình mới và
môi trường xung quanh.
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 quy tắc giai đoạn phân tích các mục tiêu truyền thông thông tin đến 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ác 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 tệp thực thi .
Xem thêm: Tài liệu về quy tắc
Mục tiêu của quy tắc
Mục tiêu là thực thể của quy tắc. Tương phản với mục tiêu tệp và nhóm gói. Đừng nhầm lẫn với quy tắc.
Tệp chạy
Các phần phụ thuộc thời gian chạy của một mục tiêu thực thi. Thông thường, tệp thực thi là dữ liệu đầu ra có thể thực thi của quy tắc kiểm thử, còn các tệp chạy là thời gian chạy phần phụ thuộc dữ liệu của chương trình kiểm thử. Trước khi gọi tệp thực thi (trong quá trình bazel test), Bazel chuẩn bị cây chạy tệp cùng với tệp thực thi kiểm thử theo cấu trúc thư mục nguồn của chúng.
Xem thêm: Tài liệu về tệp Runfile
Cơ chế hộp cát
Kỹ thuật để tách riêng một hành động đang chạy bên trong một nhóm bị hạn chế và gốc thực thi tạm thời, giúp đảm bảo rằng tệp này không đọc dữ liệu đầu vào chưa 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ể tính bí mật, nhưng thường tốn chi phí hiệu suất và đòi hỏi hỗ trợ của hệ điều hành. Chi phí hiệu suất phụ thuộc vào nền tảng. Trên Linux, tuỳ chọn này không đáng kể, nhưng trên macOS có thể khiến hộp cát không sử dụng được.
Khung chân trời
Skyframe là khung đánh giá cốt lõi song song, hoạt động và tăng dần của Bazel.
Dập kim loại
Tính năng nhúng thông tin bổ sung vào Do Bazel tạo
cấu phần phần mềm. Ví dụ: bạn có thể sử dụng đối tượng này để kiểm soát nguồn, tạo bản dựng
thời gian và không gian làm việc khác hoặc thông tin liên quan đến môi trường cho bản phát hành.
Bật thông qua cờ --workspace_status_command
và các quy tắc
hỗ trợ thuộc tính tem.
Starlark
Ngôn ngữ tiện ích để viết quy tắc và macro. Đáp
tập hợp con bị hạn chế của Python (cú pháp và ngữ pháp) nhằm vào
mục đích của cấu hình và để có hiệu suất tốt hơn. Sử dụng .bzl
. BUILD
tệp sử dụng nhiều
phiên bản bị hạn chế của Starlark (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ữ của Starlark
Cờ khởi động
Bộ cờ được chỉ định giữa bazel
và lệnh,
ví dụ: bản dựng bazel --host_jvm_debug
. Những cờ này sửa đổi
cấu hình của máy chủ Bazel, do đó, mọi sửa đổi đối với
cờ khởi động khiến máy chủ khởi động lại. Cờ khởi động không dành riêng cho bất kỳ trường hợp nào
.
Mục tiêu
Đối tượng được xác định trong tệp BUILD
và được xác định bằng một
nhãn. Mục tiêu biểu thị các đơn vị có thể tạo dựng của một không gian làm việc từ
góc nhìn 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à quy tắc
mục tiêu. Tuỳ thuộc vào quy tắc, các giá trị này có thể chạy được (như
cc_binary
) hoặc có thể thử nghiệm (như cc_test
). Mục tiêu quy tắc thường phụ thuộc
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
); chúng
các phần phụ thuộc 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à nhóm gói
mục tiêu. Các mục tiêu tệp tương ứng với cấu phần phần mềm được tham chiếu
trong tệp BUILD
. Trong trường hợp đặc biệt, tệp BUILD
của gói bất kỳ là
luôn được coi là mục tiêu tệp nguồn trong gói đó.
Hệ thống sẽ phát hiện các mục tiêu trong giai đoạn tải. Trong giai đoạn phân tích, các mục tiêu sẽ được liên kết với bản dựng cấu hình để biểu mẫu được định cấu hình .
Biểu đồ mục tiêu
Một biểu đồ trong bộ nhớ về các mục tiêu và các phần phụ thuộc của các mục tiêu đó. Thời gian sản xuất giai đoạn tải và dùng làm dữ liệu đầu vào cho bản phân tích .
Mẫu mục tiêu
Cách chỉ định một nhóm mục tiêu trên dòng lệnh. Thường gặp
mẫu đã sử 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 cách đệ quy). Có thể dùng
kết hợp, ví dụ: //...:*
có nghĩa là tất cả mục tiêu quy tắc và tệp trong tất cả
các gói theo cách đệ quy từ thư mục gốc của không gian làm việc.
Thử nghiệm
Các mục tiêu quy tắc được tạo thực thể từ các quy tắc kiểm thử, do đó chứa một tệp thực thi thử nghiệm. Mã trả về bằng 0 sau 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ư kiểm thử biến môi trường, phương pháp thu thập kết quả kiểm thử) được chỉ định trong cột Kiểm thử Bách khoa toàn thư.
Chuỗi công cụ
Tập hợp các công cụ để xây dựng đầu ra cho một ngôn ngữ. Thông thường, một chuỗi công cụ bao gồm trình biên dịch, trình liên kết, trình thông dịch hoặc/và trình tìm lỗi mã nguồn. Một chuỗi công cụ cũng có thể 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ụ dành cho cùng một ngôn ngữ. Đang chọn chuỗi công cụ phù hợp cho nền tảng này đượ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 qua lệnh Bazel
. Ví dụ: nếu //:foo
phụ thuộc vào //:bar
và bazel build //:foo
là
đượ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
cấp cao nhất, mặc dù cần xây dựng cả hai mục tiêu. Đ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à lệnh
cờ được đặt trên dòng lệnh Bazel (hoặc thông qua
.bazelrc) sẽ đặt cấu hình cho cấp cao nhất
mục tiêu, nhưng có thể được sửa đổi bởi một chuyển đổi đối với các cấp không phải cấp cao nhất
mục tiêu.
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 chỉ số khác nhau các cấu hình, ngay cả khi chúng được tạo thực thể từ cùng một quy tắc. Đáp cách sử dụng phổ biến của chuyển đổi là chuyển đổi phân tách, trong đó một số phần 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 mỗi nĩa. Ví dụ: bạn có thể tạo APK Android bằng 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 chuyển đổi phân tách trong một bản dựng duy nhất.
Xem thêm: Chuyển đổi do người dùng xác định
Cấu phần phần mềm cây
Một cấu phần phần mềm đại diện cho một tập hợp tệp. Vì những tệp không phải là cấu phần phần mềm mà phải là một hành động thao tác trên các tệp đó thay vào đó, hãy đă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:
khả năng hiển thị mục tiêu để kiểm soát việc có thể phụ thuộc vào một mục tiêu hay không
dựa trên các mục tiêu khác; và chế độ hiển thị tải để kiểm soát xem BUILD
hoặc .bzl
có thể tải một tệp .bzl
nhất định. Không có bối cảnh, thường
"chế độ hiển thị" tức là khả năng hiển thị mục tiêu.
Xem thêm: Tài liệu về chế độ hiển thị
Workspace
Môi trường dùng chung của tất cả các lệnh Bazel chạy từ cùng một chính kho lưu trữ.
Xin lưu ý rằng trước đây các khái niệm về "kho lưu trữ" và "workspace" là trộn lẫn; từ khoá "không gian làm việc" thường được dùng để chỉ kho lưu trữ và đôi khi thậm chí còn được dùng làm từ đồng nghĩa của "kho lưu trữ". Cách sử dụng như vậy nên tránh sử dụng để làm rõ.