Các hàm sau đây có thể được tải từ
@bazel_tools//tools/build_defs/repo:http.bzl
.
http_archive
http_archive(name, add_prefix, auth_patterns, build_file, build_file_content, canonical_id, integrity, netrc, patch_args, patch_cmds, patch_cmds_win, patch_tool, patches, remote_patch_strip, remote_patches, sha256, strip_prefix, type, url, urls, workspace_file, workspace_file_content)
Tải kho lưu trữ Bazel xuống dưới dạng tệp lưu trữ nén, giải nén tệp đó, và cung cấp các mục tiêu để liên kết.
Tệp này hỗ trợ các đuôi tệp sau: "zip"
, "jar"
, "war"
, "aar"
, "tar"
,
"tar.gz"
, "tgz"
, "tar.xz"
, "txz"
, "tar.zst"
, "tzst"
, tar.bz2
, "ar"
,
hoặc "deb"
.
Ví dụ:
Giả sử kho lưu trữ hiện tại chứa mã nguồn cho một chương trình trò chuyện,
đã bị can thiệp vào hệ thống tại thư mục ~/chat-app
. Cần phụ thuộc vào thư viện SSL
Tệp này có tại http://example.com/openssl.zip. Tệp .zip
này
chứa cấu trúc thư mục sau:
WORKSPACE
src/
openssl.cc
openssl.h
Trong kho lưu trữ cục bộ, người dùng tạo một tệp openssl.BUILD
chứa định nghĩa mục tiêu sau đây:
cc_library(
name = "openssl-lib",
srcs = ["src/openssl.cc"],
hdrs = ["src/openssl.h"],
)
Các mục tiêu trong kho lưu trữ ~/chat-app
có thể phụ thuộc vào mục tiêu này nếu
các dòng sau sẽ được thêm vào ~/chat-app/WORKSPACE
:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "my_ssl",
url = "http://example.com/openssl.zip",
sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
build_file = "@//:openssl.BUILD",
)
Khi đó, các mục tiêu sẽ chỉ định @my_ssl//:openssl-lib
làm phần phụ thuộc.
Thuộc tính
name |
Tên; bắt buộc
Tên riêng biệt cho kho lưu trữ này. |
add_prefix |
String; không bắt buộc
Thư mục đích liên quan đến thư mục kho lưu trữ. Tệp lưu trữ sẽ được giải nén vào thư mục này sau khi áp dụng `strip_prefix` (nếu có) vào đường dẫn tệp trong kho lưu trữ. Ví dụ: tệp API "foo-1.2.3/src/foo.h" sẽ được giải nén thành "bar/src/foo.h" nếu "add_prefix = "bar"" và `strip_prefix = "foo-1.2.3"". |
auth_patterns |
Từ điển: Chuỗi -> String; không bắt buộc
Một lệnh chính tả không bắt buộc ánh xạ tên máy chủ lưu trữ tới mẫu uỷ quyền tuỳ chỉnh.
Nếu tên máy chủ của URL xuất hiện trong lệnh này, giá trị sẽ được sử dụng làm mẫu khi
tạo tiêu đề uỷ quyền cho yêu cầu http. Điều này cho phép sử dụng các tuỳ chỉnh
nhiều nhà cung cấp bộ nhớ trên đám mây phổ biến.
Hình mở khoá này hiện hỗ trợ 2 mã thông báo: auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" } machine storage.cloudprovider.com password RANDOM-TOKEN Authorization: Bearer RANDOM-TOKEN |
build_file |
Nhãn; không bắt buộc
Tệp để sử dụng làm tệp BUILD cho kho lưu trữ này.Thuộc tính này là nhãn tuyệt đối (sử dụng '@//' cho kho lưu trữ chính). Tệp này không cần phải được đặt tên là BUILD, nhưng có thể là (chẳng hạn như BUILD.new-repo-name có thể hoạt động tốt để phân biệt với các tệp BUILD thực tế của kho lưu trữ. Bạn có thể chỉ định build_file hoặc build_file_content nhưng không được chỉ định cả hai. |
build_file_content |
String; không bắt buộc
Nội dung của tệp BUILD cho kho lưu trữ này. Bạn có thể chỉ định build_file hoặc build_file_content nhưng không được chỉ định cả hai. |
canonical_id |
String; không bắt buộc
Đã tải xuống mã nhận dạng chuẩn của bản lưu trữ. Nếu được chỉ định và không trống, bazel sẽ không lấy bản lưu trữ từ bộ nhớ đệm, trừ khi mã đó được thêm vào bộ nhớ đệm bởi một yêu cầu có cùng mã nhận dạng chuẩn. |
integrity |
String; không bắt buộc
Giá trị tổng kiểm dự kiến ở định dạng Tính toàn vẹn của tài nguyên phụ của tệp đã tải xuống. Giá trị này phải khớp với giá trị tổng kiểm của tệp đã tải xuống. _Đó là một rủi ro bảo mật để bỏ qua giá trị tổng kiểm vì tệp từ xa có thể thay đổi._ Tốt nhất là bỏ qua tuỳ chọn này sẽ làm cho bản dựng của bạn không kín. Không bắt buộc phải phát triển để dễ dàng hơn nhưng bạn phải đặt thuộc tính này hoặc "sha256" trước khi vận chuyển. |
netrc |
String; không bắt buộc
Vị trí của tệp .netrc dùng để xác thực |
patch_args |
Danh sách các chuỗi; không bắt buộc
Các đối số được cung cấp cho công cụ vá. Mặc định là -p0, tuy nhiên, -p1 thường sẽ cần thiết cho các bản vá được git tạo. Nếu bạn chỉ định nhiều đối số -p, thì đối số cuối cùng sẽ có hiệu lực.Nếu các đối số khác không phải -p được chỉ định, Bazel sẽ quay lại sử dụng công cụ dòng lệnh vá thay vì triển khai bản vá gốc Bazel. Khi quay lại dùng công cụ dòng lệnh vá và thuộc tính patch_tool không được chỉ định, "patch" sẽ được sử dụng. Vấn đề này chỉ ảnh hưởng đến các tệp bản vá trong thuộc tính "bản vá". |
patch_cmds |
Danh sách các chuỗi; không bắt buộc
Trình tự các lệnh Bash sẽ được áp dụng trên Linux/Macos sau khi áp dụng bản vá. |
patch_cmds_win |
Danh sách các chuỗi; không bắt buộc
Trình tự các lệnh Powershell sẽ được áp dụng trên Windows sau khi áp dụng bản vá. Nếu bạn không đặt thuộc tính này, patch_cmds sẽ được thực thi trên Windows và buộc phải có tệp nhị phân Bash. |
patch_tool |
String; không bắt buộc
Tiện ích patch(1) nên sử dụng. Nếu bạn chỉ định điều này, Bazel sẽ sử dụng công cụ vá được chỉ định thay vì triển khai bản vá gốc Bazel. |
patches |
Danh sách nhãn; không bắt buộc
Danh sách các tệp sẽ được áp dụng dưới dạng bản vá sau khi giải nén bản lưu trữ. Theo mặc định, công cụ này sử dụng phương thức triển khai bản vá gốc Bazel không hỗ trợ tính năng so khớp mờ và bản vá nhị phân. Tuy nhiên, Bazel sẽ quay lại sử dụng công cụ dòng lệnh của bản vá nếu thuộc tính "patch_tool" được chỉ định hoặc có các đối số khác "-p" trong thuộc tính "patch_args". |
remote_patch_strip |
Số nguyên; không bắt buộc
Số dấu gạch chéo ở đầu cần xóa khỏi tên tệp trong bản vá từ xa. |
remote_patches |
Từ điển: Chuỗi -> String; không bắt buộc
Sơ đồ liên kết URL của tệp bản vá với giá trị tính toàn vẹn. Các URL này được áp dụng sau khi trích xuất bản lưu trữ và trước khi áp dụng tệp bản vá từ thuộc tính "bản vá". Công cụ này sử dụng phương thức triển khai bản vá gốc Bazel, bạn có thể chỉ định số dải bản vá bằng `remote_patch_strip` |
sha256 |
String; không bắt buộc
SHA-256 dự kiến của tệp được tải xuống. Mã này phải khớp với SHA-256 của tệp được tải xuống. _Đó là một rủi ro bảo mật để bỏ qua SHA-256 vì các tệp từ xa có thể thay đổi._ Tốt nhất là bỏ qua tuỳ chọn này sẽ làm cho bản dựng của bạn không kín. Không bắt buộc phải phát triển để trở nên dễ dàng hơn nhưng bạn phải đặt thuộc tính này hoặc "tính toàn vẹn" trước khi vận chuyển. |
strip_prefix |
String; không bắt buộc
Tiền tố thư mục để xóa khỏi các tệp đã giải nén. Nhiều tệp lưu trữ có chứa một thư mục cấp cao nhất chứa tất cả thông tin hữu ích tệp được lưu trữ. Thay vì phải chỉ định tiền tố này nhiều lần trong `build_file`, bạn có thể sử dụng trường này để tách trường này khỏi tất cả tệp được giải nén. Ví dụ: giả sử bạn đang sử dụng "foo-lib-Latest.zip", trong đó chứa phương thức thư mục "foo-lib-1.2.3/" trong đó có một tệp "WORKSPACE" và Các thư mục "src/", "lib/" và "test/" chứa mã thực tế mà bạn mà bạn muốn xây dựng. Chỉ định `strip_prefix = "foo-lib-1.2.3"` để sử dụng Thư mục "foo-lib-1.2.3" là thư mục cấp cao nhất của bạn. Xin lưu ý rằng nếu có tệp nằm ngoài thư mục này, các tệp đó sẽ bị loại bỏ và không thể truy cập được (ví dụ: tệp giấy phép cấp cao nhất). bao gồm các tệp/thư mục bắt đầu bằng tiền tố nhưng không có trong thư mục (ví dụ: `foo-lib-1.2.3.release-notes`). Nếu tiền tố được chỉ định không khớp với một thư mục trong kho lưu trữ, Bazel sẽ trả về lỗi. |
type |
String; không bắt buộc
Loại lưu trữ của tệp đã tải xuống. Theo mặc định, loại lưu trữ được xác định từ đuôi tệp của URL. Nếu tệp không có đuôi, bạn có thể chỉ định rõ một trong những sau: ""zip"`, `"jar"`, `"war"`, `"aar"`, `"tar"`, `"tar.gz"`, `"tgz"`, `"tar.xz"`, `"txz"`, `"tar.zst"`, ""tzst"`, `tar.bz2`, `"ar"` hoặc `"deb"". |
url |
String; không bắt buộc
URL đến một tệp sẽ được cung cấp cho Bazel. Đây phải là tệp, URL http hoặc https. Đã thực hiện lệnh chuyển hướng. Không hỗ trợ tính năng xác thực. Có thể linh hoạt hơn nhờ tham số url cho phép để chỉ định URL thay thế để tìm nạp. |
urls |
Danh sách các chuỗi; không bắt buộc
Danh sách URL dẫn đến một tệp sẽ được cung cấp cho Bazel. Mỗi mục nhập phải là một tệp, URL http hoặc https. Đã thực hiện lệnh chuyển hướng. Không hỗ trợ tính năng xác thực. Các URL được thử theo thứ tự cho đến khi thành công, vì vậy trước tiên bạn nên liệt kê các bản sao cục bộ. Nếu tất cả các lượt tải xuống đều không thành công, thì quy tắc này sẽ không thành công. |
workspace_file |
Nhãn; không bắt buộc
Tệp này để sử dụng làm tệp "WORKSPACE" cho kho lưu trữ này. Bạn có thể chỉ định "workspace_file" hoặc "workspace_file_content" hoặc không chỉ định, nhưng không thể chỉ định cả hai. |
workspace_file_content |
String; không bắt buộc
Nội dung của tệp WORKSPACE cho kho lưu trữ này. Bạn có thể chỉ định "workspace_file" hoặc "workspace_file_content" hoặc không chỉ định, nhưng không thể chỉ định cả hai. |
http_file
http_file(name, auth_patterns, canonical_id, downloaded_file_path, executable, integrity, netrc, sha256, url, urls)
Tải tệp xuống từ URL và đặt tệp đó để sử dụng dưới dạng tệp nhóm.
Ví dụ: Giả sử bạn cần có một gói debian cho các quy tắc tuỳ chỉnh của mình. Gói này có tại http://example.com/package.deb. Sau đó, bạn có thể thêm vào Tệp WORKSPACE:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
http_file(
name = "my_deb",
url = "http://example.com/package.deb",
sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
)
Các mục tiêu sẽ chỉ định @my_deb//file
làm phần phụ thuộc để phụ thuộc vào tệp này.
Thuộc tính
name |
Tên; bắt buộc
Tên riêng biệt cho kho lưu trữ này. |
auth_patterns |
Từ điển: Chuỗi -> String; không bắt buộc
Một lệnh chính tả không bắt buộc ánh xạ tên máy chủ lưu trữ tới mẫu uỷ quyền tuỳ chỉnh.
Nếu tên máy chủ của URL xuất hiện trong lệnh này, giá trị sẽ được sử dụng làm mẫu khi
tạo tiêu đề uỷ quyền cho yêu cầu http. Điều này cho phép sử dụng các tuỳ chỉnh
nhiều nhà cung cấp bộ nhớ trên đám mây phổ biến.
Hình mở khoá này hiện hỗ trợ 2 mã thông báo: auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" } machine storage.cloudprovider.com password RANDOM-TOKEN Authorization: Bearer RANDOM-TOKEN |
canonical_id |
String; không bắt buộc
Đã tải xuống mã nhận dạng chuẩn của bản lưu trữ. Nếu được chỉ định và không trống, bazel sẽ không lấy bản lưu trữ từ bộ nhớ đệm, trừ khi mã đó được thêm vào bộ nhớ đệm bởi một yêu cầu có cùng mã nhận dạng chuẩn. |
downloaded_file_path |
String; không bắt buộc
Đường dẫn được gán cho tệp được tải xuống |
executable |
Boolean; không bắt buộc
Liệu tệp đã tải xuống có phải là tệp thực thi hay không. |
integrity |
String; không bắt buộc
Giá trị tổng kiểm dự kiến ở định dạng Tính toàn vẹn của tài nguyên phụ của tệp đã tải xuống. Giá trị này phải khớp với giá trị tổng kiểm của tệp đã tải xuống. _Đó là một rủi ro bảo mật để bỏ qua giá trị tổng kiểm vì tệp từ xa có thể thay đổi._ Tốt nhất là bỏ qua tuỳ chọn này sẽ làm cho bản dựng của bạn không kín. Không bắt buộc phải phát triển để dễ dàng hơn nhưng bạn phải đặt thuộc tính này hoặc "sha256" trước khi vận chuyển. |
netrc |
String; không bắt buộc
Vị trí của tệp .netrc dùng để xác thực |
sha256 |
String; không bắt buộc
SHA-256 dự kiến của tệp được tải xuống. Mã này phải khớp với SHA-256 của tệp được tải xuống. _Đó là một rủi ro bảo mật để bỏ qua SHA-256 vì các tệp từ xa có thể thay đổi._ Tốt nhất là bỏ qua tuỳ chọn này sẽ làm cho bản dựng của bạn không kín. Không bắt buộc phải phát triển dễ dàng hơn nhưng nên được đặt trước khi vận chuyển. |
url |
String; không bắt buộc
URL đến một tệp sẽ được cung cấp cho Bazel. Đây phải là tệp, URL http hoặc https. Đã thực hiện lệnh chuyển hướng. Không hỗ trợ tính năng xác thực. Có thể linh hoạt hơn nhờ tham số url cho phép để chỉ định URL thay thế để tìm nạp. |
urls |
Danh sách các chuỗi; không bắt buộc
Danh sách URL dẫn đến một tệp sẽ được cung cấp cho Bazel. Mỗi mục nhập phải là một tệp, URL http hoặc https. Đã thực hiện lệnh chuyển hướng. Không hỗ trợ tính năng xác thực. Các URL được thử theo thứ tự cho đến khi thành công, vì vậy trước tiên bạn nên liệt kê các bản sao cục bộ. Nếu tất cả các lượt tải xuống đều không thành công, thì quy tắc này sẽ không thành công. |
http_jar
http_jar(name, auth_patterns, canonical_id, downloaded_file_name, integrity, netrc, sha256, url, urls)
Tải tệp jar xuống từ một URL và cung cấp tệp này dưới dạng java_nhập
Tệp được tải xuống phải có đuôi .jar.
Ví dụ:
Giả sử kho lưu trữ hiện tại chứa mã nguồn cho một chương trình trò chuyện, được can thiệp vào hệ thống tại
thư mục ~/chat-app
. Cần phụ thuộc vào thư viện SSL có sẵn
http://example.com/openssl-0.2.jar
.
Các mục tiêu trong kho lưu trữ ~/chat-app
có thể phụ thuộc vào mục tiêu này nếu các dòng sau là
đã thêm vào ~/chat-app/WORKSPACE
:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_jar")
http_jar(
name = "my_ssl",
url = "http://example.com/openssl-0.2.jar",
sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
)
Các mục tiêu sẽ chỉ định <code>@my_ssl//jar</code> làm phần phụ thuộc để phụ thuộc vào jar này.
Bạn cũng có thể tham chiếu các tệp trên hệ thống hiện tại (localhost) bằng cách sử dụng "file:///path/to/file"
nếu bạn đang sử dụng các hệ thống có nền tảng Unix. Nếu bạn đang dùng Windows, hãy sử dụng "file:///c:/path/to/file". Trong cả hai
ví dụ: hãy lưu ý 3 dấu gạch chéo (/
) -- 2 dấu gạch chéo đầu tiên thuộc về file://
và 3 dấu gạch chéo
một thuộc tính thuộc đường dẫn tuyệt đối đến tệp.
Thuộc tính
name |
Tên; bắt buộc
Tên riêng biệt cho kho lưu trữ này. |
auth_patterns |
Từ điển: Chuỗi -> String; không bắt buộc
Một lệnh chính tả không bắt buộc ánh xạ tên máy chủ lưu trữ tới mẫu uỷ quyền tuỳ chỉnh.
Nếu tên máy chủ của URL xuất hiện trong lệnh này, giá trị sẽ được sử dụng làm mẫu khi
tạo tiêu đề uỷ quyền cho yêu cầu http. Điều này cho phép sử dụng các tuỳ chỉnh
nhiều nhà cung cấp bộ nhớ trên đám mây phổ biến.
Hình mở khoá này hiện hỗ trợ 2 mã thông báo: auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" } machine storage.cloudprovider.com password RANDOM-TOKEN Authorization: Bearer RANDOM-TOKEN |
canonical_id |
String; không bắt buộc
Đã tải xuống mã nhận dạng chuẩn của bản lưu trữ. Nếu được chỉ định và không trống, bazel sẽ không lấy bản lưu trữ từ bộ nhớ đệm, trừ khi mã đó được thêm vào bộ nhớ đệm bởi một yêu cầu có cùng mã nhận dạng chuẩn. |
downloaded_file_name |
String; không bắt buộc
Tên tệp được chỉ định cho tệp đã tải xuống |
integrity |
String; không bắt buộc
Giá trị tổng kiểm dự kiến ở định dạng Tính toàn vẹn của tài nguyên phụ của tệp đã tải xuống. Giá trị này phải khớp với giá trị tổng kiểm của tệp đã tải xuống. _Đó là một rủi ro bảo mật để bỏ qua giá trị tổng kiểm vì tệp từ xa có thể thay đổi._ Tốt nhất là bỏ qua tuỳ chọn này sẽ làm cho bản dựng của bạn không kín. Không bắt buộc phải phát triển để dễ dàng hơn nhưng bạn phải đặt thuộc tính này hoặc "sha256" trước khi vận chuyển. |
netrc |
String; không bắt buộc
Vị trí của tệp .netrc dùng để xác thực |
sha256 |
String; không bắt buộc
SHA-256 dự kiến của tệp được tải xuống. Mã này phải khớp với SHA-256 của tệp được tải xuống. _Đó là một rủi ro bảo mật để bỏ qua SHA-256 vì các tệp từ xa có thể thay đổi._ Tốt nhất là bỏ qua tuỳ chọn này sẽ làm cho bản dựng của bạn không kín. Không bắt buộc phải phát triển để trở nên dễ dàng hơn nhưng bạn phải đặt thuộc tính này hoặc "tính toàn vẹn" trước khi vận chuyển. |
url |
String; không bắt buộc
URL đến một tệp sẽ được cung cấp cho Bazel. Đây phải là tệp, URL http hoặc https. Đã thực hiện lệnh chuyển hướng. Không hỗ trợ tính năng xác thực. Có thể linh hoạt hơn nhờ tham số url cho phép để chỉ định URL thay thế để tìm nạp. URL phải kết thúc bằng.jar`. |
urls |
Danh sách các chuỗi; không bắt buộc
Danh sách URL dẫn đến một tệp sẽ được cung cấp cho Bazel. Mỗi mục nhập phải là một tệp, URL http hoặc https. Đã thực hiện lệnh chuyển hướng. Không hỗ trợ tính năng xác thực. Các URL được thử theo thứ tự cho đến khi thành công, vì vậy trước tiên bạn nên liệt kê các bản sao cục bộ. Nếu tất cả các lượt tải xuống đều không thành công, thì quy tắc này sẽ không thành công. Tất cả URL phải kết thúc bằng.jar. |