http 저장소 규칙

문제 신고 소스 보기 Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

다음 함수는 @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)

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 저장소의 대상은 다음과 같은 경우 이 대상에 종속될 수 있습니다. 다음 줄이 ~/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",
  )

그러면 타겟은 @my_ssl//:openssl-lib를 종속 항목으로 지정합니다.

속성

name 이름: 필수사항

이 저장소의 고유한 이름입니다.

add_prefix 문자열(선택사항)

저장소 디렉터리를 기준으로 한 대상 디렉터리입니다. `strip_prefix`를 적용한 후 보관 파일이 이 디렉터리로 압축 해제됩니다. (있는 경우)를 아카이브 내의 파일 경로로 변경합니다. 예: 파일 `add_prefix = "bar"`인 경우 `foo-1.2.3/src/foo.h` 는 `bar/src/foo.h`로 압축 해제됩니다. `strip_prefix = "foo-1.2.3"`입니다.

auth_patterns 사전: 문자열 -> String; 선택사항

호스트 이름을 커스텀 승인 패턴에 매핑하는 사전(선택사항)입니다. URL의 호스트 이름이 이 사전에 있는 경우 http 요청에 대한 승인 헤더를 생성합니다. 이렇게 하면 커스텀 승인 체계가 사용됩니다. 이 패턴은 현재 토큰 2개(<login><password> - 동등한 값으로 대체됨 netrc 파일에 두 개 있을 수 있습니다. 형식이 지정된 후 결과는 HTTP 요청의 Authorization 필드 값으로 설정됩니다. Bearer 토큰을 사용하여 oauth2가 사용 설정된 API로 http 다운로드를 위한 속성 및 netrc의 예:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
최종 HTTP 요청에는 다음과 같은 헤더가 포함됩니다.
Authorization: Bearer RANDOM-TOKEN

build_file 라벨 선택사항

이 저장소의 BUILD 파일로 사용할 파일입니다. 이 속성은 절대 라벨입니다(기본 저장소에는 '@//' 사용). 파일의 이름을 BUILD로 지정할 필요는 없지만 그렇게 해도 됩니다 (BUILD.new-repo-name과 같은 것이 저장소의 실제 BUILD 파일과 구분되는 데 적합할 수 있음). build_file 또는 build_file_content 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

build_file_content String; 선택사항

이 저장소의 BUILD 파일 콘텐츠입니다. build_file 또는 build_file_content 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

canonical_id String; 선택사항

다운로드된 보관 파일의 표준 ID입니다. 지정하고 비어 있지 않으면 bazel은 캐시에서 보관 파일을 가져오지 않습니다. 를 사용합니다.

integrity 문자열(선택사항)

다운로드된 파일의 하위 리소스 무결성 형식의 예상 체크섬입니다. 이는 다운로드한 파일의 체크섬과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 체크섬을 생략하면 보안 위험이 발생합니다._ 이 필드를 생략하면 기껏해야 빌드가 비밀 유지가 불가능해집니다. 개발은 선택사항으로 더 쉽지만 배송 전에 이 속성 또는 `sha256` 을 설정해야 합니다.

netrc 문자열(선택사항)

인증에 사용할 .netrc 파일의 위치

patch_args 문자열 목록 선택사항

패치 도구에 제공된 인수입니다. 기본값은 -p0이지만 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_tool 문자열(선택사항)

사용할 패치(1) 유틸리티입니다. 이를 지정하면 Bazel은 Bazel 네이티브 패치 구현 대신 지정된 패치 도구를 사용합니다.

patches 라벨 목록 선택사항

보관 파일을 추출한 후 패치로 적용할 파일 목록입니다. 기본적으로는 퍼징 일치 및 바이너리 패치를 지원하지 않는 Bazel 네이티브 패치 구현을 사용하지만, `patch_tool` 속성이 지정되거나 `patch_args` 속성에 `-p` 이외의 인수가 있는 경우 Bazel은 패치 명령줄 도구를 사용하도록 대체합니다.

remote_patch_strip Integer; 선택사항

원격 패치의 파일 이름에서 제거할 선행 슬래시의 수입니다.

remote_patches 사전: 문자열 -> 문자열(선택사항)

패치 파일 URL과 무결성 값의 매핑입니다. 이는 보관 파일을 추출한 후 `패치` 속성의 패치 파일을 적용하기 전에 적용됩니다. Bazel 네이티브 패치 구현을 사용하므로 `remote_patch_strip`를 사용하여 패치 스트립 번호를 지정할 수 있습니다.

sha256 String; 선택사항

다운로드된 파일의 예상 SHA-256입니다. 다운로드한 파일의 SHA-256과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 SHA-256을 생략하면 보안 위험이 발생합니다._ 이 필드를 생략하면 기껏해야 빌드가 비밀 유지가 불가능해집니다. 개발을 더 쉽게 하기 위한 선택사항이지만 이 속성 또는 `integrity`는 출시 전에 설정해야 합니다.

strip_prefix 문자열(선택사항)

추출된 파일에서 삭제할 디렉터리 프리픽스입니다. 많은 아카이브에는 유용한 모든 정보가 포함된 최상위 디렉토리가 보관 파일이 있습니다. `build_file`에서 이 접두사를 반복해서 지정하는 대신 이 필드를 사용하여 추출된 모든 파일에서 접두사를 삭제할 수 있습니다. 예를 들어, `foo-lib-latest.zip`을 사용한다고 가정해 보겠습니다. 이 파일에는 `foo-lib-1.2.3/` 디렉터리 아래에 `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 String; 선택사항

다운로드한 파일의 보관 파일 유형입니다. 기본적으로 보관 파일 유형은 URL의 파일 확장자에서 결정됩니다. 파일에 확장자가 없는 경우 다음 중 하나를 명시적으로 지정할 수 있습니다. `"zip"`, `"jar"`, `"war"`, `"aar"`, `"tar"`, `"tar.gz"`, `"tgz"`, `"tar.xz"`, `"txz"`, `"tar.zst"`, `"tzst"`, `tar.bz2`, `"ar"`, 또는 `"deb"`.

url String; 선택사항

Bazel에서 사용할 수 있는 파일의 URL입니다. 파일, http 또는 https URL이어야 합니다. 리디렉션이 적용됩니다. 인증이 지원되지 않습니다. 가져올 대체 URL을 지정할 수 있는 urls 매개변수를 사용하면 더 유연하게 작업할 수 있습니다.

urls 문자열 목록 선택사항

Bazel이 사용할 수 있는 파일의 URL 목록입니다. 각 항목은 파일, http 또는 https URL이어야 합니다. 리디렉션을 따릅니다. 인증이 지원되지 않습니다. URL은 하나가 성공할 때까지 순서대로 시도되므로 로컬 미러를 먼저 나열해야 합니다. 모든 다운로드가 실패하면 규칙이 실패합니다.

workspace_file 라벨: 선택사항

이 저장소의 `WORKSPACE` 파일로 사용할 파일입니다. `workspace_file` 또는 `workspace_file_content` 중 하나를 지정하거나 둘 다 지정할 수 있지만 둘 다 지정할 수는 없습니다.

workspace_file_content 문자열(선택사항)

이 저장소의 WORKSPACE 파일 콘텐츠입니다. `workspace_file` 또는 `workspace_file_content` 중 하나를 지정하거나 둘 다 지정할 수 있지만 둘 다 지정할 수는 없습니다.

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를 지정합니다.

속성

name 이름: 필수사항

이 저장소의 고유한 이름입니다.

auth_patterns 사전: 문자열 -> String; 선택사항

호스트 이름을 맞춤 승인 패턴에 매핑하는 선택적 사전입니다. URL의 호스트 이름이 이 사전에 있는 경우 http 요청에 대한 승인 헤더를 생성합니다. 이렇게 하면 커스텀 승인 체계가 사용됩니다. 이 패턴은 현재 <login><password>라는 두 개의 토큰을 지원하며, 이는 동일한 호스트 이름의 netrc 파일에서 상응하는 값으로 대체됩니다. 형식을 지정한 후 결과가 설정됩니다. 를 HTTP 요청의 Authorization 필드 값으로 사용합니다. Bearer 토큰을 사용하여 oauth2가 사용 설정된 API로 http 다운로드를 위한 속성 및 netrc의 예:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
최종 HTTP 요청에는 다음과 같은 헤더가 포함됩니다.
Authorization: Bearer RANDOM-TOKEN

canonical_id 문자열(선택사항)

다운로드된 보관 파일의 표준 ID입니다. 지정하고 비어 있지 않으면 bazel은 캐시에서 보관 파일을 가져오지 않습니다. 를 사용합니다.

downloaded_file_path String; 선택사항

다운로드된 파일에 할당된 경로

executable 부울; 선택사항

다운로드한 파일을 실행 파일로 만들어야 하는지 여부입니다.

integrity String; 선택사항

다운로드된 파일의 하위 리소스 무결성 형식의 예상 체크섬입니다. 이는 다운로드한 파일의 체크섬과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 체크섬을 생략하면 보안 위험이 발생합니다._ 이 필드를 생략하면 기껏해야 빌드가 비밀 유지가 불가능해집니다. 개발은 선택사항으로 더 쉽지만 배송 전에 이 속성 또는 `sha256` 을 설정해야 합니다.

netrc 문자열(선택사항)

인증에 사용할 .netrc 파일의 위치입니다.

sha256 String; 선택사항

다운로드된 파일의 예상 SHA-256입니다. 다운로드한 파일의 SHA-256과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 SHA-256을 생략하면 보안 위험이 발생합니다._ 이 필드를 생략하면 기껏해야 빌드가 비밀 유지가 불가능해집니다. 개발을 더 쉽게 하기 위한 선택사항이지만 출시 전에 설정해야 합니다.

url 문자열(선택사항)

Bazel에서 사용할 수 있는 파일의 URL입니다. 파일, http 또는 https URL이어야 합니다. 리디렉션이 적용됩니다. 인증이 지원되지 않습니다. 가져올 대체 URL을 지정할 수 있는 urls 매개변수를 사용하면 더 유연하게 작업할 수 있습니다.

urls 문자열 목록 선택사항

Bazel이 사용할 수 있는 파일의 URL 목록입니다. 각 항목은 파일, http 또는 https URL이어야 합니다. 리디렉션을 따릅니다. 인증은 지원되지 않습니다. URL은 하나의 성공할 때까지 순서대로 시도되므로 먼저 로컬 미러를 나열해야 합니다. 모든 다운로드가 실패하면 규칙이 실패합니다.

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",
  )

대상은 <code>@my_ssl//jar</code>를 지정합니다. 이 jar에 종속되도록 합니다.

Unix 기반 시스템을 사용하는 경우 'file:///path/to/file'을 사용하여 현재 시스템(localhost)의 파일을 참조할 수도 있습니다. Windows의 경우 'file:///c:/path/to/file'을 사용하세요. 둘 다 예를 들어 슬래시 3개 (/)를 확인합니다. 처음 두 개의 슬래시는 file://에 속하고 세 번째 슬래시는 file://에 속합니다. 파일의 절대 경로에 속합니다

속성

name 이름 필수

이 저장소의 고유한 이름입니다.

auth_patterns 사전: 문자열 -> 문자열(선택사항)

호스트 이름을 커스텀 승인 패턴에 매핑하는 사전(선택사항)입니다. URL의 호스트 이름이 이 사전에 있는 경우 http 요청에 대한 승인 헤더를 생성합니다. 이를 통해 많은 일반적인 클라우드 스토리지 제공업체에서 사용되는 맞춤 승인 스키마를 사용할 수 있습니다. 이 패턴은 현재 <login><password>라는 두 개의 토큰을 지원하며, 이는 동일한 호스트 이름의 netrc 파일에서 상응하는 값으로 대체됩니다. 형식이 지정된 후 결과는 HTTP 요청의 Authorization 필드 값으로 설정됩니다. Bearer 토큰을 사용하여 oauth2가 사용 설정된 API로 http 다운로드를 위한 속성 및 netrc의 예:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
최종 HTTP 요청에는 다음과 같은 헤더가 포함됩니다.
Authorization: Bearer RANDOM-TOKEN

canonical_id String; 선택사항

다운로드된 보관 파일의 표준 ID입니다. 지정하고 비어 있지 않으면 bazel은 캐시에서 보관 파일을 가져오지 않습니다. 를 사용합니다.

downloaded_file_name String; 선택사항

다운로드된 jar에 할당된 파일 이름

integrity 문자열(선택사항)

다운로드된 파일의 하위 리소스 무결성 형식의 예상 체크섬입니다. 이는 다운로드한 파일의 체크섬과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 체크섬을 생략하면 보안 위험이 발생합니다._ 이 필드를 생략하면 기껏해야 빌드가 비밀 유지가 불가능해집니다. 개발은 선택사항으로 더 쉽지만 배송 전에 이 속성 또는 `sha256` 을 설정해야 합니다.

netrc 문자열(선택사항)

인증에 사용할 .netrc 파일의 위치입니다.

sha256 String; 선택사항

다운로드된 파일의 예상 SHA-256입니다. 다운로드한 파일의 SHA-256과 일치해야 합니다. _원격 파일이 변경될 수 있으므로 SHA-256을 생략하면 보안 위험이 발생합니다._ 이 필드를 생략하면 기껏해야 빌드가 비밀 유지가 불가능해집니다. 개발을 더 쉽게 하기 위한 선택사항이지만 이 속성 또는 `integrity`는 출시 전에 설정해야 합니다.

url String; 선택사항

Bazel이 사용할 수 있는 파일의 URL입니다. 파일, http 또는 https URL이어야 합니다. 리디렉션을 따릅니다. 인증은 지원되지 않습니다. 가져올 대체 URL을 지정할 수 있는 urls 매개변수를 사용하면 더 유연하게 작업할 수 있습니다. URL은 `.jar`로 끝나야 합니다.

urls 문자열 목록(선택사항)

Bazel이 사용할 수 있는 파일의 URL 목록입니다. 각 항목은 파일, http 또는 https URL이어야 합니다. 리디렉션을 따릅니다. 인증이 지원되지 않습니다. URL은 하나의 성공할 때까지 순서대로 시도되므로 먼저 로컬 미러를 나열해야 합니다. 모든 다운로드가 실패하면 규칙이 실패합니다. 모든 URL은 `.jar`로 끝나야 합니다.