Bạn có thể tải các hàm sau 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.
Trình 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, được lưu trữ tại thư mục ~/chat-app
. Thư viện này cần phụ thuộc vào một thư viện SSL có sẵn 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:
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 bạn thêm các dòng sau 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",
)
Sau đó, 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 duy nhất cho kho lưu trữ này. |
add_prefix |
Chuỗi; không bắt buộc
Thư mục đích tương ứng với 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ó) cho các đường dẫn tệp trong tệp lưu trữ. Ví dụ: tệp `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 -> Chuỗi; không bắt buộc
Một dict tuỳ chọn ánh xạ tên máy chủ lưu trữ đến các mẫu uỷ quyền tuỳ chỉnh.
Nếu tên máy chủ của URL có trong tập hợp này, thì giá trị này sẽ được 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 giao thức uỷ quyền tuỳ chỉnh được dùng trong nhiều nhà cung cấp dịch vụ lưu trữ trên đám mây phổ biến.
Mẫu 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 dùng làm tệp BUILD cho kho lưu trữ này.Thuộc tính này là một 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ên là BUILD, nhưng có thể là (tên như BUILD.new-repo-name có thể phù hợp để phân biệt tệp này 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 |
Chuỗi; 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 |
Chuỗi; không bắt buộc
Mã nhận dạng chính tắc của tệp lưu trữ đã tải xuống. Nếu được chỉ định và không trống, bazel sẽ không lấy tệp lưu trữ từ bộ nhớ đệm, trừ phi tệp lưu trữ đó được thêm vào bộ nhớ đệm bằng một yêu cầu có cùng mã nhận dạng chính tắc. |
integrity |
Chuỗi; không bắt buộc
Checksum dự kiến ở định dạng Subresource Integrity của tệp đã tải xuống. Giá trị này phải khớp với tổng kiểm của tệp đã tải xuống. _Việc bỏ qua tổng kiểm tra là một rủi ro bảo mật vì các tệp từ xa có thể thay đổi._ Tốt nhất là bạn không nên bỏ qua trường này vì sẽ khiến bản dựng của bạn không kín. Bạn không bắt buộc phải làm việc này để việc 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 xuất bản. |
netrc |
Chuỗi; không bắt buộc
Vị trí của tệp .netrc để sử dụng cho việc xác thực |
patch_args |
Danh sách chuỗi; không bắt buộc
Các đối số được cung cấp cho công cụ vá. Giá trị mặc định là -p0, tuy nhiên, bạn thường sẽ cần -p1 cho các bản vá do 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 bạn chỉ định các đối số khác ngoài -p, thì Bazel sẽ quay lại sử dụng công cụ dòng lệnh bản vá thay vì triển khai bản vá gốc Bazel. Khi quay lại công cụ dòng lệnh vá và không chỉ định thuộc tính patch_tool, hệ thống sẽ sử dụng "patch". Điều này chỉ ảnh hưởng đến các tệp bản vá trong thuộc tính "patches". |
patch_cmds |
Danh sách 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 các bản vá. |
patch_cmds_win |
Danh sách 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 các 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, yêu cầu tệp nhị phân Bash phải tồn tại. |
patch_tool |
Chuỗi; không bắt buộc
Tiện ích bản vá(1) để sử dụng. Nếu bạn chỉ định giá trị 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 tệp 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, nhưng Bazel sẽ quay lại sử dụng công cụ dòng lệnh bản vá nếu thuộc tính `patch_tool` được chỉ định hoặc có các đối số khác ngoài `-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 tiên cần xoá khỏi tên tệp trong các bản vá từ xa. |
remote_patches |
Từ điển: Chuỗi -> Chuỗi; không bắt buộc
Bản đồ URL tệp bản vá đến giá trị tính toàn vẹn của tệp bản vá. Các bản đồ này được áp dụng sau khi trích xuất tệp lưu trữ và trước khi áp dụng tệp bản vá từ thuộc tính "bản vá". Tính năng 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 |
Chuỗi; không bắt buộc
Hàm băm SHA-256 dự kiến của tệp đã tải xuống. Hàm băm này phải khớp với hàm băm SHA-256 của tệp đã tải xuống. _Việc bỏ qua SHA-256 là một rủi ro bảo mật vì các tệp từ xa có thể thay đổi._ Tốt nhất là bạn không nên bỏ qua trường này vì sẽ khiến bản dựng của bạn không kín. Bạn không bắt buộc phải làm việc này để việc phát triể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 phát hành. |
strip_prefix |
Chuỗi; không bắt buộc
Tiền tố thư mục cần xoá khỏi các tệp đã trích xuất. Nhiều tệp lưu trữ chứa một thư mục cấp cao nhất chứa tất cả các tệp hữu ích trong tệp lưu trữ. Thay vì cần 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 để xoá tiền tố đó khỏi tất cả các tệp đã trích xuất. Ví dụ: giả sử bạn đang sử dụng tệp `foo-lib-latest.zip`, tệp này chứa thư mục `foo-lib-1.2.3/` trong đó có tệp `WORKSPACE` và các thư mục `src/`, `lib/` và `test/` chứa mã thực tế mà bạn muốn tạo. Chỉ định `strip_prefix = "foo-lib-1.2.3"` để sử dụng thư mục `foo-lib-1.2.3` làm thư mục cấp cao nhất. Xin lưu ý rằng nếu có các tệp nằm ngoài thư mục này, thì 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). Điều này bao gồm các tệp/thư mục bắt đầu bằng tiền tố nhưng không nằm 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 tệp lưu trữ, Bazel sẽ trả về lỗi. |
type |
Chuỗi; không bắt buộc
Loại tệp lưu trữ của tệp đã tải xuống. Theo mặc định, loại tệp 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õ ràng một trong các đuôi sau: "zip", "jar", "war", "aar", "tar", "tar.gz", "tgz", "tar.xz", "txz", "tar.zst", "tzst", "tar.bz2", "ar" hoặc "deb". |
url |
Chuỗi; 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. Tuân theo lệnh chuyển hướng. Không hỗ trợ xác thực. Bạn có thể linh hoạt hơn bằng tham số urls cho phép chỉ định các URL thay thế để tìm nạp. |
urls |
Danh sách chuỗi; không bắt buộc
Danh sách URL đế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. Tuân theo lệnh chuyển hướng. Không hỗ trợ xác thực. Các URL được thử theo thứ tự cho đến khi một URL thành công, vì vậy, bạn nên liệt kê các bản sao cục bộ trước. Nếu tất 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 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 cả hai, nhưng không được chỉ định cả hai. |
workspace_file_content |
Chuỗi; 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 cả hai, nhưng không được 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ừ một URL và cung cấp tệp đó để sử dụng làm nhóm tệp.
Ví dụ: Giả sử bạn cần có một gói debian cho các quy tắc tuỳ chỉnh. Bạn có thể tải gói này xuống từ 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 duy nhất cho kho lưu trữ này. |
auth_patterns |
Từ điển: Chuỗi -> Chuỗi; không bắt buộc
Một dict tuỳ chọn ánh xạ tên máy chủ lưu trữ đến các mẫu uỷ quyền tuỳ chỉnh.
Nếu tên máy chủ của URL có trong tập hợp này, thì giá trị này sẽ được 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 giao thức uỷ quyền tuỳ chỉnh được dùng trong nhiều nhà cung cấp dịch vụ lưu trữ trên đám mây phổ biến.
Mẫu 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 |
Chuỗi; không bắt buộc
Mã nhận dạng chính tắc của tệp lưu trữ đã tải xuống. Nếu được chỉ định và không trống, bazel sẽ không lấy tệp lưu trữ từ bộ nhớ đệm, trừ phi tệp lưu trữ đó được thêm vào bộ nhớ đệm bằng một yêu cầu có cùng mã nhận dạng chính tắc. |
downloaded_file_path |
Chuỗi; không bắt buộc
Đường dẫn được chỉ định cho tệp đã tải xuống |
executable |
Boolean; không bắt buộc
Nếu tệp đã tải xuống có thể thực thi. |
integrity |
Chuỗi; không bắt buộc
Checksum dự kiến ở định dạng Subresource Integrity của tệp đã tải xuống. Giá trị này phải khớp với tổng kiểm của tệp đã tải xuống. _Việc bỏ qua tổng kiểm tra là một rủi ro bảo mật vì các tệp từ xa có thể thay đổi._ Tốt nhất là bạn không nên bỏ qua trường này vì sẽ khiến bản dựng của bạn không kín. Bạn không bắt buộc phải làm việc này để việc 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 xuất bản. |
netrc |
Chuỗi; không bắt buộc
Vị trí của tệp .netrc để sử dụng cho việc xác thực |
sha256 |
Chuỗi; không bắt buộc
Hàm băm SHA-256 dự kiến của tệp đã tải xuống. Hàm băm này phải khớp với hàm băm SHA-256 của tệp đã tải xuống. _Việc bỏ qua SHA-256 là một rủi ro bảo mật vì các tệp từ xa có thể thay đổi._ Tốt nhất là bạn không nên bỏ qua trường này vì sẽ khiến bản dựng của bạn không kín. Bạn không bắt buộc phải làm việc này để việc phát triển trở nên dễ dàng hơn nhưng bạn nên thiết lập trước khi phát hành. |
url |
Chuỗi; 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. Tuân theo lệnh chuyển hướng. Không hỗ trợ xác thực. Bạn có thể linh hoạt hơn bằng tham số urls cho phép chỉ định các URL thay thế để tìm nạp. |
urls |
Danh sách chuỗi; không bắt buộc
Danh sách URL đế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. Tuân theo lệnh chuyển hướng. Không hỗ trợ xác thực. Các URL được thử theo thứ tự cho đến khi một URL thành công, vì vậy, bạn nên liệt kê các bản sao cục bộ trước. Nếu tất 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 đó dưới dạng java_import
Tệp đã 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 lưu trữ tại thư mục ~/chat-app
. Thư viện này cần phụ thuộc vào một thư viện SSL có sẵn trong 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 bạn thêm các dòng sau 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 tệp 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 (máy chủ cục bộ) bằng cách sử dụng "file:///path/to/file" nếu bạn đang sử dụng hệ thống dựa trên 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 ý đến ba dấu gạch chéo (/
) – hai dấu gạch chéo đầu tiên thuộc về file://
và dấu gạch chéo thứ ba thuộc về đường dẫn tuyệt đối đến tệp.
Thuộc tính
name |
Tên; bắt buộc
Tên duy nhất cho kho lưu trữ này. |
auth_patterns |
Từ điển: Chuỗi -> Chuỗi; không bắt buộc
Một dict tuỳ chọn ánh xạ tên máy chủ lưu trữ đến các mẫu uỷ quyền tuỳ chỉnh.
Nếu tên máy chủ của URL có trong tập hợp này, thì giá trị này sẽ được 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 giao thức uỷ quyền tuỳ chỉnh được dùng trong nhiều nhà cung cấp dịch vụ lưu trữ trên đám mây phổ biến.
Mẫu 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 |
Chuỗi; không bắt buộc
Mã nhận dạng chính tắc của tệp lưu trữ đã tải xuống. Nếu được chỉ định và không trống, bazel sẽ không lấy tệp lưu trữ từ bộ nhớ đệm, trừ phi tệp lưu trữ đó được thêm vào bộ nhớ đệm bằng một yêu cầu có cùng mã nhận dạng chính tắc. |
downloaded_file_name |
Chuỗi; không bắt buộc
Tên tệp được chỉ định cho tệp jar đã tải xuống |
integrity |
Chuỗi; không bắt buộc
Checksum dự kiến ở định dạng Subresource Integrity của tệp đã tải xuống. Giá trị này phải khớp với tổng kiểm của tệp đã tải xuống. _Việc bỏ qua tổng kiểm tra là một rủi ro bảo mật vì các tệp từ xa có thể thay đổi._ Tốt nhất là bạn không nên bỏ qua trường này vì sẽ khiến bản dựng của bạn không kín. Bạn không bắt buộc phải làm việc này để việc 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 xuất bản. |
netrc |
Chuỗi; không bắt buộc
Vị trí của tệp .netrc để sử dụng cho việc xác thực |
sha256 |
Chuỗi; không bắt buộc
Hàm băm SHA-256 dự kiến của tệp đã tải xuống. Hàm băm này phải khớp với hàm băm SHA-256 của tệp đã tải xuống. _Việc bỏ qua SHA-256 là một rủi ro bảo mật vì các tệp từ xa có thể thay đổi._ Tốt nhất là bạn không nên bỏ qua trường này vì sẽ khiến bản dựng của bạn không kín. Bạn không bắt buộc phải làm việc này để việc phát triể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 phát hành. |
url |
Chuỗi; 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. Tuân theo lệnh chuyển hướng. Không hỗ trợ xác thực. Bạn có thể linh hoạt hơn bằng tham số urls cho phép chỉ định các URL thay thế để tìm nạp. URL phải kết thúc bằng ".jar". |
urls |
Danh sách chuỗi; không bắt buộc
Danh sách URL đế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. Tuân theo lệnh chuyển hướng. Không hỗ trợ xác thực. Các URL được thử theo thứ tự cho đến khi một URL thành công, vì vậy, bạn nên liệt kê các bản sao cục bộ trước. Nếu tất 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". |