셸 규칙

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

규칙

sh_바이너리

sh_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_properties, features, licenses, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

sh_binary 규칙은 실행 가능한 셸 스크립트를 선언하는 데 사용됩니다. (sh_binary은 부적절한 명칭입니다. 출력이 반드시 바이너리일 필요는 없습니다.) 이 규칙은 모든 종속 항목이 빌드되고 실행 시간에 runfiles 영역에 표시되도록 합니다. sh_binary() 규칙의 이름은 스크립트 이름에서 확장자를 기준으로 하여 지정하는 것이 좋습니다 (예: .sh). 규칙 이름과 파일 이름은 고유해야 합니다. sh_binary는 Shebang를 존중하므로 사용 가능한 모든 인터프리터가 사용될 수 있습니다 (예: #!/bin/zsh)

종속 항목과 일부 데이터 파일이 없는 간단한 셸 스크립트:

sh_binary(
    name = "foo",
    srcs = ["foo.sh"],
    data = glob(["datafiles/*.txt"]),
)

인수

속성
name

Name; required

이 대상의 고유한 이름입니다.

deps

List of labels; optional

이 대상으로 집계될 '라이브러리' 타겟의 목록입니다. 대부분의 빌드 규칙에서 정의한 일반적인 속성에서 deps에 관한 일반적인 설명을 참고하세요.

이 속성은 srcs의 코드에 종속된 해석된 프로그램 소스 코드를 제공하는 다른 sh_library 규칙을 나열하는 데 사용해야 합니다. 이러한 규칙에서 제공하는 파일은 이 타겟의 runfiles에 있습니다.

srcs

List of labels; required

셸 스크립트가 포함된 파일입니다.

이 속성은 요소가 셸 스크립트인 싱글톤 목록이어야 합니다. 이 스크립트는 실행 가능해야 하며 소스 파일 또는 생성된 파일일 수 있습니다. 런타임에 필요한 다른 모든 파일 (스크립트 또는 데이터)은 data 속성에 속합니다.

sh_library

sh_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

이 규칙의 주요 용도는 컴파일하거나 링크할 필요가 없는 해석된 언어(예: 본 셸) 프로그램과 관련 프로그램에서 실행되는 모든 데이터로 구성된 논리적인 '라이브러리'를 함께 수집하는 것입니다. 그런 다음 이러한 하나 이상의 sh_binary 규칙의 data 속성에서 이러한 라이브러리를 사용할 수 있습니다.

filegroup 규칙을 사용하여 데이터 파일을 집계할 수 있습니다.

해석된 프로그래밍 언어에서 프로그램과 코드 사이에는 항상 명확한 구분이 있는 것은 아닙니다. 결국 프로그램은 단순히 인터프리터의 관점에서 보는 것입니다. 이런 이유로 이 규칙에는 기본적으로 동일한 동등한 속성 3가지(srcs, deps, data)가 있습니다. 현재 구현은 이러한 목록의 요소를 구분하지 않습니다. 세 가지 속성 모두 규칙, 소스 파일, 생성된 파일을 허용합니다. 하지만 다른 규칙과 마찬가지로 일반적인 용도로 속성을 사용하는 것이 좋습니다.

sh_library(
    name = "foo",
    data = [
        ":foo_service_script",  # an sh_binary with srcs
        ":deploy_foo",  # another sh_binary with srcs
    ],
)

인수

속성
name

Name; required

이 대상의 고유한 이름입니다.

deps

List of labels; optional

이 대상으로 집계될 '라이브러리' 타겟의 목록입니다. 대부분의 빌드 규칙에서 정의한 일반적인 속성에서 deps에 관한 일반적인 설명을 참고하세요.

이 속성은 srcs의 코드에 종속된 해석된 프로그램 소스 코드를 제공하는 다른 sh_library 규칙을 나열하는 데 사용해야 합니다. 이러한 규칙에서 제공하는 파일은 이 타겟의 runfiles에 있습니다.

srcs

List of labels; optional

입력 파일 목록.

이 속성은 이 라이브러리에 속한 셸 스크립트 소스 파일을 나열하는 데 사용되어야 합니다. 스크립트에서는 셸의 source 또는 . 명령어를 사용하여 다른 스크립트를 로드할 수 있습니다.

sh_test

sh_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, licenses, local, restricted_to, shard_count, size, tags, target_compatible_with, testonly, timeout, toolchains, visibility)

sh_test() 규칙은 본 셸 스크립트로 작성된 테스트를 만듭니다.

모든 테스트 규칙 (*_test)에 공통적인 속성을 참조하세요.

sh_test(
    name = "foo_integration_test",
    size = "small",
    srcs = ["foo_integration_test.sh"],
    deps = [":foo_sh_lib"],
    data = glob(["testdata/*.txt"]),
)

인수

속성
name

Name; required

이 대상의 고유한 이름입니다.

deps

List of labels; optional

이 대상으로 집계될 '라이브러리' 타겟의 목록입니다. 대부분의 빌드 규칙에서 정의한 일반적인 속성에서 deps에 관한 일반적인 설명을 참고하세요.

이 속성은 srcs의 코드에 종속된 해석된 프로그램 소스 코드를 제공하는 다른 sh_library 규칙을 나열하는 데 사용해야 합니다. 이러한 규칙에서 제공하는 파일은 이 타겟의 runfiles에 있습니다.

srcs

List of labels; required

셸 스크립트가 포함된 파일입니다.

이 속성은 요소가 셸 스크립트인 싱글톤 목록이어야 합니다. 이 스크립트는 실행 가능해야 하며 소스 파일 또는 생성된 파일일 수 있습니다. 런타임에 필요한 다른 모든 파일 (스크립트 또는 데이터)은 data 속성에 속합니다.