다음 함수는 @bazel_tools//tools/build_defs/repo:http.bzl
에서 로드할 수 있습니다.
HTTP를 통해 파일과 보관 파일을 다운로드하는 규칙입니다.
설정
모듈 확장 프로그램에서 이러한 규칙을 사용하려면 .bzl 파일에서 로드한 다음 확장 프로그램의 구현 함수에서 호출하세요. 예를 들어 http_archive
를 사용하려면 다음 안내를 따르세요.
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
def _my_extension_impl(mctx):
http_archive(name = "foo", urls = [...])
my_extension = module_extension(implementation = _my_extension_impl)
또는 use_repo_rule
를 사용하여 MODULE.bazel 파일에서 이러한 저장소 규칙을 직접 호출할 수 있습니다.
http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(name = "foo", urls = [...])
http_archive
load("@bazel//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_strip, patch_tool, patches, remote_file_integrity, remote_file_urls, remote_module_file_integrity, remote_module_file_urls, remote_patch_strip, remote_patches, sha256, strip_prefix, type, url, urls, workspace_file, workspace_file_content)
Bazel 저장소를 압축된 보관 파일로 다운로드하고 압축을 해제하며 바인딩할 수 있도록 타겟을 제공합니다.
지원되는 파일 확장자는 "zip"
, "jar"
, "war"
, "aar"
, "tar"
, "tar.gz"
, "tgz"
, "tar.xz"
, "txz"
, "tar.zst"
, "tzst"
, tar.bz2
, "ar"
, "deb"
입니다.
예:
현재 저장소에 디렉터리 ~/chat-app
에 루트가 있는 채팅 프로그램의 소스 코드가 포함되어 있다고 가정해 보겠습니다. http://example.com/openssl.zip에서 제공되는 SSL 라이브러리에 의존해야 합니다. 이 .zip
파일에는 다음 디렉터리 구조가 포함됩니다.
WORKSPACE
src/
openssl.cc
openssl.h
로컬 저장소에서 사용자는 다음 타겟 정의가 포함된 openssl.BUILD
파일을 만듭니다.
cc_library(
name = "openssl-lib",
srcs = ["src/openssl.cc"],
hdrs = ["src/openssl.h"],
)
다음 줄이 ~/chat-app/WORKSPACE
에 추가되면 ~/chat-app
저장소의 타겟이 이 타겟에 종속될 수 있습니다.
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",
)
그러면 타겟은 @my_ssl//:openssl-lib
을 종속 항목으로 지정합니다.
ATTRIBUTES
name |
이름: 필수
이 저장소의 고유한 이름입니다. |
add_prefix |
문자열, 선택사항
저장소 디렉터리를 기준으로 하는 대상 디렉터리입니다. 보관 파일은 보관 파일 내 파일 경로에 `strip_prefix`(있는 경우)를 적용한 후 이 디렉터리에 압축 해제됩니다. 예를 들어 `add_prefix = "bar"` 및 `strip_prefix = "foo-1.2.3"`인 경우 `foo-1.2.3/src/foo.h` 파일이 `bar/src/foo.h`로 압축 해제됩니다. |
auth_patterns |
사전: 문자열 -> 문자열; 선택사항
호스트 이름을 맞춤 승인 패턴에 매핑하는 선택적 사전입니다.
URL의 호스트 이름이 이 dict에 있으면 http 요청의 승인 헤더를 생성할 때 값이 패턴으로 사용됩니다. 이를 통해 많은 일반적인 클라우드 스토리지 제공업체에서 사용되는 맞춤 승인 스키마를 사용할 수 있습니다.
이 패턴은 현재 auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" } machine storage.cloudprovider.com password RANDOM-TOKEN Authorization: Bearer RANDOM-TOKEN |
build_file |
라벨: 선택사항
이 저장소의 BUILD 파일로 사용할 파일입니다.이 속성은 절대 라벨입니다 (기본 저장소의 경우 '@//' 사용). 파일 이름이 BUILD일 필요는 없지만 BUILD.new-repo-name과 같이 저장소의 실제 빌드 파일과 구분할 수 있는 이름을 사용하는 것이 좋습니다. build_file 또는 build_file_content 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다. |
build_file_content |
문자열, 선택사항
이 저장소의 BUILD 파일 콘텐츠입니다. build_file 또는 build_file_content 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다. |
canonical_id |
문자열, 선택사항
다운로드된 파일의 표준 ID입니다. 지정되고 비어 있지 않으면 동일한 표준 ID를 가진 요청에 의해 캐시에 추가되지 않는 한 Bazel은 캐시에서 파일을 가져오지 않습니다. 지정되지 않았거나 비어 있으면 Bazel은 기본적으로 파일의 URL을 표준 ID로 사용합니다. 이렇게 하면 해시도 업데이트하지 않고 URL만 업데이트하는 일반적인 실수를 포착할 수 있으므로 로컬에서는 빌드가 성공하지만 캐시에 파일이 없는 머신에서는 실패합니다. 이 동작은 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0을 사용하여 사용 중지할 수 있습니다. |
integrity |
문자열, 선택사항
다운로드된 파일의 하위 리소스 무결성 형식의 예상 체크섬입니다. 다운로드한 파일의 체크섬과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 체크섬을 생략하면 보안 위험이 있습니다._ 이 필드를 생략하면 빌드가 비헤르메틱해집니다. 개발을 더 쉽게 하기 위해 선택사항이지만 배송 전에 이 속성이나 `sha256` 을 설정해야 합니다. |
netrc |
문자열, 선택사항
인증에 사용할 .netrc 파일의 위치 |
patch_args |
문자열 목록, 선택사항
패치 도구에 제공된 인수입니다. 기본값은 -p0입니다 (`patch_strip` 속성 참고). 하지만 일반적으로 git에서 생성된 패치에는 -p1이 필요합니다. -p 인수가 여러 개 지정되면 마지막 인수가 적용됩니다. -p 이외의 인수가 지정되면 Bazel은 Bazel 네이티브 패치 구현 대신 패치 명령줄 도구를 사용하도록 대체됩니다. 패치 명령줄 도구로 대체되고 patch_tool 속성이 지정되지 않은 경우 `patch` 가 사용됩니다. 이는 `patches` 속성의 패치 파일에만 영향을 미칩니다. |
patch_cmds |
문자열 목록, 선택사항
패치가 적용된 후 Linux/Macos에 적용할 Bash 명령어 시퀀스입니다. |
patch_cmds_win |
문자열 목록, 선택사항
패치가 적용된 후 Windows에 적용할 PowerShell 명령어 시퀀스입니다. 이 속성이 설정되지 않으면 Windows에서 patch_cmds가 실행되므로 Bash 바이너리가 있어야 합니다. |
patch_strip |
정수, 선택사항
`N`으로 설정하면 `patch_args` 의 시작 부분에 `-pN`을 삽입하는 것과 같습니다. |
patch_tool |
문자열, 선택사항
사용할 patch(1) 유틸리티입니다. 이를 지정하면 Bazel은 Bazel 네이티브 패치 구현 대신 지정된 패치 도구를 사용합니다. |
patches |
라벨 목록(선택사항)
보관 파일을 추출한 후 패치로 적용할 파일 목록입니다. 기본적으로 퍼지 일치와 바이너리 패치를 지원하지 않는 Bazel 네이티브 패치 구현을 사용하지만 `patch_tool` 속성이 지정되거나 `patch_args` 속성에 `-p` 이외의 인수가 있는 경우 Bazel은 패치 명령줄 도구를 사용하도록 대체됩니다. |
remote_file_integrity |
사전: 문자열 -> 문자열; 선택사항
파일 상대 경로 (키)와 무결성 값 (값)의 맵입니다. 이러한 상대 경로는 `remote_file_urls` 속성의 파일 (키)에 매핑되어야 합니다. |
remote_file_urls |
사전: 문자열 -> 문자열 목록; 선택사항
다운로드되어 저장소에 오버레이된 파일로 제공될 URL 목록 (값)에 대한 상대 경로 (키)의 맵입니다. 이 방법은 기존 저장소 위에 WORKSPACE 또는 BUILD.bazel 파일을 추가하려는 경우에 유용합니다. 파일은 `patches` 속성에서 패치를 적용하기 전에 다운로드되며 URL 목록은 모두 동일한 파일의 가능한 미러여야 합니다. URL은 성공할 때까지 순서대로 시도됩니다. |
remote_module_file_integrity |
문자열, 선택사항
내부 전용입니다. |
remote_module_file_urls |
문자열 목록, 선택사항
내부 전용입니다. |
remote_patch_strip |
정수, 선택사항
원격 패치의 파일 이름에서 삭제할 선행 슬래시 수입니다. |
remote_patches |
사전: 문자열 -> 문자열; 선택사항
패치 파일 URL과 그 무결성 값의 맵입니다. 이 값은 보관 파일을 추출한 후 `patches` 속성의 패치 파일을 적용하기 전에 적용됩니다. Bazel 네이티브 패치 구현을 사용하며 `remote_patch_strip`으로 패치 스트립 번호를 지정할 수 있습니다. |
sha256 |
문자열, 선택사항
다운로드된 파일의 예상 SHA-256입니다. 다운로드한 파일의 SHA-256과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 SHA-256을 생략하면 보안 위험이 있습니다._ 이 필드를 생략하면 빌드가 비밀폐형이 됩니다. 개발을 더 쉽게 하기 위해 선택사항이지만 배송 전에 이 속성 또는 `integrity` 를 설정해야 합니다. |
strip_prefix |
문자열, 선택사항
압축 해제된 파일에서 삭제할 디렉터리 접두사입니다. 많은 보관 파일에는 보관 파일의 유용한 모든 파일이 포함된 최상위 디렉터리가 포함되어 있습니다. `build_file`에서 이 접두사를 반복해서 지정할 필요가 없으며, 이 필드를 사용하여 추출된 모든 파일에서 접두사를 삭제할 수 있습니다. 예를 들어 `foo-lib-1.2.3/` 디렉터리가 포함된 `foo-lib-latest.zip`을 사용하고 있으며, 이 디렉터리에는 `WORKSPACE` 파일과 빌드하려는 실제 코드가 포함된 `src/`, `lib/`, `test/` 디렉터리가 있다고 가정해 보겠습니다. `foo-lib-1.2.3` 디렉터리를 최상위 디렉터리로 사용하려면 `strip_prefix = "foo-lib-1.2.3"`을 지정하세요. 이 디렉터리 외부에 있는 파일은 삭제되고 액세스할 수 없습니다 (예: 최상위 라이선스 파일). 여기에는 접두사로 시작하지만 디렉터리에 없는 파일/디렉터리가 포함됩니다(예: `foo-lib-1.2.3.release-notes`). 지정된 접두사가 보관 파일의 디렉터리와 일치하지 않으면 Bazel에서 오류를 반환합니다. |
type |
문자열, 선택사항
다운로드한 파일의 보관 파일 유형입니다. 기본적으로 보관 파일 유형은 URL의 파일 확장자에서 결정됩니다. 파일에 확장자가 없는 경우 `"zip"`, `"jar"`, `"war"`, `"aar"`, `"tar"`, `"tar.gz"`, `"tgz"`, `"tar.xz"`, `"txz"`, `"tar.zst"`, `"tzst"`, `"tar.bz2"`, `"ar"`, `"deb"` 중 하나를 명시적으로 지정할 수 있습니다. |
url |
문자열, 선택사항
Bazel에서 사용할 수 있게 될 파일의 URL입니다. 파일, http 또는 https URL이어야 합니다. 리디렉션을 통해 이동합니다. 인증은 지원되지 않습니다. 가져올 대체 URL을 지정할 수 있는 urls 매개변수를 사용하면 더 유연하게 처리할 수 있습니다. |
urls |
문자열 목록, 선택사항
Bazel에서 사용할 수 있는 파일의 URL 목록입니다. 각 항목은 파일, http 또는 https URL이어야 합니다. 리디렉션을 통해 이동합니다. 인증은 지원되지 않습니다. URL은 성공할 때까지 순서대로 시도되므로 로컬 미러를 먼저 나열해야 합니다. 모든 다운로드가 실패하면 규칙이 실패합니다. |
workspace_file |
라벨: 선택사항
작업 없음 속성입니다. 사용하지 마세요. |
workspace_file_content |
문자열, 선택사항
작업 없음 속성입니다. 사용하지 마세요. |
환경 변수
이 저장소 규칙은 다음 환경 변수에 따라 달라집니다.
BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID
http_file
load("@bazel//tools/build_defs/repo:http.bzl", "http_file") http_file(name, auth_patterns, canonical_id, downloaded_file_path, executable, integrity, netrc, sha256, url, urls)
URL에서 파일을 다운로드하여 파일 그룹으로 사용할 수 있도록 합니다.
예: 맞춤 규칙에 debian 패키지가 필요하다고 가정해 보겠습니다. 이 패키지는 http://example.com/package.deb에서 사용할 수 있습니다. 그런 다음 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",
)
타겟은 이 파일에 종속되도록 @my_deb//file
를 종속 항목으로 지정합니다.
ATTRIBUTES
name |
이름: 필수
이 저장소의 고유한 이름입니다. |
auth_patterns |
사전: 문자열 -> 문자열; 선택사항
호스트 이름을 맞춤 승인 패턴에 매핑하는 선택적 사전입니다.
URL의 호스트 이름이 이 dict에 있으면 http 요청의 승인 헤더를 생성할 때 값이 패턴으로 사용됩니다. 이를 통해 많은 일반적인 클라우드 스토리지 제공업체에서 사용되는 맞춤 승인 스키마를 사용할 수 있습니다.
이 패턴은 현재 auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" } machine storage.cloudprovider.com password RANDOM-TOKEN Authorization: Bearer RANDOM-TOKEN |
canonical_id |
문자열, 선택사항
다운로드된 파일의 표준 ID입니다. 지정되고 비어 있지 않으면 동일한 표준 ID를 가진 요청에 의해 캐시에 추가되지 않는 한 Bazel은 캐시에서 파일을 가져오지 않습니다. 지정되지 않았거나 비어 있으면 Bazel은 기본적으로 파일의 URL을 표준 ID로 사용합니다. 이렇게 하면 해시도 업데이트하지 않고 URL만 업데이트하는 일반적인 실수를 포착할 수 있으므로 로컬에서는 빌드가 성공하지만 캐시에 파일이 없는 머신에서는 실패합니다. 이 동작은 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0을 사용하여 사용 중지할 수 있습니다. |
downloaded_file_path |
문자열, 선택사항
다운로드한 파일에 할당된 경로 |
executable |
불리언, 선택사항
다운로드한 파일을 실행 가능하게 만들어야 하는지 여부입니다. |
integrity |
문자열, 선택사항
다운로드된 파일의 하위 리소스 무결성 형식의 예상 체크섬입니다. 다운로드한 파일의 체크섬과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 체크섬을 생략하면 보안 위험이 있습니다._ 이 필드를 생략하면 빌드가 비헤르메틱해집니다. 개발을 더 쉽게 하기 위해 선택사항이지만 배송 전에 이 속성이나 `sha256` 을 설정해야 합니다. |
netrc |
문자열, 선택사항
인증에 사용할 .netrc 파일의 위치 |
sha256 |
문자열, 선택사항
다운로드된 파일의 예상 SHA-256입니다. 다운로드한 파일의 SHA-256과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 SHA-256을 생략하면 보안 위험이 있습니다._ 이 필드를 생략하면 빌드가 비밀폐형이 됩니다. 개발을 더 쉽게 하기 위해 선택사항이지만 배송 전에 설정해야 합니다. |
url |
문자열, 선택사항
Bazel에서 사용할 수 있게 될 파일의 URL입니다. 파일, http 또는 https URL이어야 합니다. 리디렉션을 통해 이동합니다. 인증은 지원되지 않습니다. 가져올 대체 URL을 지정할 수 있는 urls 매개변수를 사용하면 더 유연하게 처리할 수 있습니다. |
urls |
문자열 목록, 선택사항
Bazel에서 사용할 수 있는 파일의 URL 목록입니다. 각 항목은 파일, http 또는 https URL이어야 합니다. 리디렉션을 통해 이동합니다. 인증은 지원되지 않습니다. URL은 성공할 때까지 순서대로 시도되므로 로컬 미러를 먼저 나열해야 합니다. 모든 다운로드가 실패하면 규칙이 실패합니다. |
환경 변수
이 저장소 규칙은 다음 환경 변수에 따라 달라집니다.
BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID
http_jar
load("@bazel//tools/build_defs/repo:http.bzl", "http_jar") http_jar(name, auth_patterns, canonical_id, downloaded_file_name, integrity, netrc, sha256, url, urls)
URL에서 jar를 다운로드하고 java_import로 사용할 수 있도록 합니다.
다운로드한 파일의 확장자는 .jar여야 합니다.
예:
현재 저장소에 ~/chat-app
디렉터리에 루트가 있는 채팅 프로그램의 소스 코드가 포함되어 있다고 가정해 보겠습니다. http://example.com/openssl-0.2.jar
에서 사용할 수 있는 SSL 라이브러리에 종속되어야 합니다.
다음 줄이 ~/chat-app/WORKSPACE
에 추가되면 ~/chat-app
저장소의 타겟이 이 타겟에 종속될 수 있습니다.
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",
)
타겟은 이 jar에 종속되도록 @my_ssl//jar
를 종속 항목으로 지정합니다.
Unix 기반 시스템을 사용하는 경우 'file:///path/to/file'을 사용하여 현재 시스템 (localhost)의 파일을 참조할 수도 있습니다. Windows를 사용하는 경우 'file:///c:/path/to/file'을 사용합니다. 두 예시 모두에서 슬래시 (/
) 세 개를 확인하세요. 처음 두 슬래시는 file://
에 속하고 세 번째 슬래시는 파일의 절대 경로에 속합니다.
ATTRIBUTES
name |
이름: 필수
이 저장소의 고유한 이름입니다. |
auth_patterns |
사전: 문자열 -> 문자열; 선택사항
호스트 이름을 맞춤 승인 패턴에 매핑하는 선택적 사전입니다.
URL의 호스트 이름이 이 dict에 있으면 http 요청의 승인 헤더를 생성할 때 값이 패턴으로 사용됩니다. 이를 통해 많은 일반적인 클라우드 스토리지 제공업체에서 사용되는 맞춤 승인 스키마를 사용할 수 있습니다.
이 패턴은 현재 auth_patterns = { "storage.cloudprovider.com": "Bearer <password>" } machine storage.cloudprovider.com password RANDOM-TOKEN Authorization: Bearer RANDOM-TOKEN |
canonical_id |
문자열, 선택사항
다운로드된 파일의 표준 ID입니다. 지정되고 비어 있지 않으면 동일한 표준 ID를 가진 요청에 의해 캐시에 추가되지 않는 한 Bazel은 캐시에서 파일을 가져오지 않습니다. 지정되지 않았거나 비어 있으면 Bazel은 기본적으로 파일의 URL을 표준 ID로 사용합니다. 이렇게 하면 해시도 업데이트하지 않고 URL만 업데이트하는 일반적인 실수를 포착할 수 있으므로 로컬에서는 빌드가 성공하지만 캐시에 파일이 없는 머신에서는 실패합니다. 이 동작은 --repo_env=BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID=0을 사용하여 사용 중지할 수 있습니다. |
downloaded_file_name |
문자열, 선택사항
다운로드된 jar에 할당된 파일 이름 |
integrity |
문자열, 선택사항
다운로드된 파일의 하위 리소스 무결성 형식의 예상 체크섬입니다. 다운로드한 파일의 체크섬과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 체크섬을 생략하면 보안 위험이 있습니다._ 이 필드를 생략하면 빌드가 비헤르메틱해집니다. 개발을 더 쉽게 하기 위해 선택사항이지만 배송 전에 이 속성이나 `sha256` 을 설정해야 합니다. |
netrc |
문자열, 선택사항
인증에 사용할 .netrc 파일의 위치 |
sha256 |
문자열, 선택사항
다운로드된 파일의 예상 SHA-256입니다. 다운로드한 파일의 SHA-256과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 SHA-256을 생략하면 보안 위험이 있습니다._ 이 필드를 생략하면 빌드가 비밀폐형이 됩니다. 개발을 더 쉽게 하기 위해 선택사항이지만 배송 전에 이 속성 또는 `integrity` 를 설정해야 합니다. |
url |
문자열, 선택사항
Bazel에서 사용할 수 있게 될 파일의 URL입니다. 파일, http 또는 https URL이어야 합니다. 리디렉션을 통해 이동합니다. 인증은 지원되지 않습니다. 가져올 대체 URL을 지정할 수 있는 urls 매개변수를 사용하면 더 유연하게 처리할 수 있습니다. URL은 `.jar`로 끝나야 합니다. |
urls |
문자열 목록, 선택사항
Bazel에서 사용할 수 있는 파일의 URL 목록입니다. 각 항목은 파일, http 또는 https URL이어야 합니다. 리디렉션을 통해 이동합니다. 인증은 지원되지 않습니다. URL은 성공할 때까지 순서대로 시도되므로 로컬 미러를 먼저 나열해야 합니다. 모든 다운로드가 실패하면 규칙이 실패합니다. 모든 URL은 `.jar`로 끝나야 합니다. |
환경 변수
이 저장소 규칙은 다음 환경 변수에 따라 달라집니다.
BAZEL_HTTP_RULES_URLS_AS_DEFAULT_CANONICAL_ID