작업

문제 신고 소스 보기

작업을 만드는 함수를 제공하는 모듈입니다. ctx.actions를 사용하여 이 모듈에 액세스합니다.

구성원

args

Args actions.args()

메모리 효율적인 명령줄을 빌드하는 데 사용할 수 있는 Args 객체를 반환합니다.

선언_디렉터리

File actions.declare_directory(filename, *, sibling=None)

규칙 또는 가로세로 항목이 현재 패키지에 지정된 이름의 디렉터리를 생성하도록 선언합니다. 디렉터리를 생성하는 작업을 만들어야 합니다. 디렉터리의 콘텐츠는 Starlark에서 직접 액세스할 수 없지만 Args.add_all()를 사용하여 작업 명령어에서 확장할 수 있습니다. 일반적인 파일 및 디렉터리만 manifest_directory의 확장 콘텐츠에 포함될 수 있습니다.

매개변수

매개변수 설명
filename 필수
'동위'가 제공되지 않은 경우 현재 패키지를 기준으로 한 새 디렉터리의 경로입니다. 그렇지 않은 경우 파일의 기본 이름 ('동위 요소'가 디렉터리를 정의함)입니다.
sibling File; or None; default = None
새로 선언된 디렉터리와 같은 디렉터리에 있는 파일입니다. 파일이 현재 패키지에 있어야 합니다.

선언_파일

File actions.declare_file(filename, *, sibling=None)

규칙 또는 측면이 지정된 파일 이름으로 파일을 생성한다고 선언합니다. sibling을 지정하지 않으면 파일 이름이 패키지 디렉터리를 기준으로 하며, 그렇지 않으면 파일이 sibling와 같은 디렉터리에 있습니다. 현재 패키지 외부에 파일을 만들 수 없습니다.

파일을 선언하는 것 외에도 파일을 내보내는 작업을 별도로 만들어야 합니다. 이 작업을 만들려면 반환된 File 객체를 작업의 구성 함수에 전달해야 합니다.

사전 선언된 출력 파일은 이 함수를 사용하여 선언할 필요가 없으며 선언할 수도 없습니다. 대신 ctx.outputs에서 File 객체를 가져올 수 있습니다. 사용 예 보기

매개변수

매개변수 설명
filename 필수
'동위'가 제공되지 않은 경우 현재 패키지를 기준으로 하는 새 파일의 경로입니다. 그렇지 않은 경우 파일의 기본 이름 ('동위'에 따라 디렉터리가 결정됨)
sibling File; or None; default = None
새로 만든 파일과 동일한 디렉터리에 있는 파일입니다. 파일이 현재 패키지에 있어야 합니다.

File actions.declare_symlink(filename, *, sibling=None)

이 매개변수는 실험적이며 언제든지 변경될 수 있습니다. --noexperimental_allow_unresolved_symlinks를 설정하여 사용 중지할 수 있습니다.

규칙 또는 측면이 현재 패키지에 지정된 이름의 심볼릭 링크를 생성하도록 선언합니다. 이 심볼릭 링크를 생성하는 작업을 만들어야 합니다. Bazel은 이 심볼릭 링크를 역참조하지 않으며 그대로 샌드박스 또는 원격 실행자에게 전달합니다. 트리 아티팩트 내의 심볼릭 링크는 현재 지원되지 않습니다.

매개변수

매개변수 설명
filename 필수
'동위'가 제공되지 않은 경우 현재 심볼릭 링크를 기준으로 한 새로운 심볼릭 링크입니다. 그렇지 않은 경우 파일의 기본 이름 ('동위 요소'가 디렉터리를 정의함)입니다.
sibling File; or None; default = None
새로 선언된 심볼릭 링크와 동일한 디렉터리에 있는 파일입니다.

없음

None actions.do_nothing(mnemonic, inputs=[])

명령어를 실행하거나 출력을 생성하지 않는 빈 작업을 만들지만 '추가 작업'을 삽입하는 데는 유용합니다.

매개변수

매개변수 설명
mnemonic 필수
작업에 대한 한 단어로 된 설명입니다(예: CppCompile, GoLink).
inputs sequence of Files; or depset; default = []
작업의 입력 파일 목록입니다.

템플릿 펼치기

None actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)

템플릿 확장 작업을 만듭니다. 작업이 실행되면 템플릿을 기반으로 파일이 생성됩니다. 템플릿의 일부는 대체가 지정된 순서대로 substitutions 사전을 사용하여 대체됩니다. 템플릿에 사전 (또는 이전 대체 결과)이 표시될 때마다 키가 연결된 값으로 대체됩니다. 키에 대한 특수 구문은 없습니다. 중괄호를 사용하여 충돌을 피할 수 있습니다 (예: {KEY}). 사용 예 보기

매개변수

매개변수 설명
template 필수
템플릿 파일(UTF-8로 인코딩된 텍스트 파일)입니다.
output 필수
출력 파일이며 UTF-8로 인코딩된 텍스트 파일입니다.
substitutions 기본값 = {}
템플릿을 확장할 때 대체 항목
is_executable default = False
출력 파일의 실행 가능 여부입니다.
computed_substitutions TemplateDict; 기본값은 =
실험용입니다. 이 매개변수는 실험적이며 언제든지 변경될 수 있습니다. 여기에 의존하지 마세요. --+experimental_lazy_template_expansion
실험용: 템플릿을 펼칠 때 적용하는 대체 항목을 설정하여 실험용으로 사용 설정할 수 있습니다.

득점

None actions.run(outputs, inputs=[], unused_inputs_list=None, executable, tools=unbound, arguments=[], mnemonic=None, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)

실행 파일을 실행하는 작업을 만듭니다. 사용 예 보기

매개변수

매개변수 설명
outputs sequence of Files; 필수
작업의 출력 파일 목록입니다.
inputs sequence of Files; or depset; default = []
작업의 입력 파일을 나열하거나 오프셋합니다.
unused_inputs_list File; or None; 기본값 = None
작업에서 사용하지 않는 입력 목록이 포함된 파일입니다.

이 파일의 콘텐츠 (일반적으로 작업의 출력 중 하나)는 전체 작업 실행 중에 사용되지 않은 입력 파일의 목록에 해당합니다. 이러한 파일의 변경사항은 어떤 식으로든 작업 출력에 영향을 미치지 않습니다.

executable File; or string; or FilesToRunProvider, 필수
작업에서 호출할 실행 파일입니다.
tools sequence; or depset; default = unbound
작업에 필요한 모든 도구를 나열하거나 역역산합니다. 도구는 추가 실행 파일이 작업에 자동으로 제공되는 입력입니다. 목록이 제공되는 경우 파일, FilesToRunProvider 인스턴스 또는 Files의 디포지션 컬렉션일 수 있습니다. 목록에 직접 포함되어 있고 ctx.executable에서 제공된 파일에는 실행 파일이 자동으로 추가됩니다. 오프셋을 제공하면 파일만 포함해야 합니다. 두 경우 모두에서 depset 내의 파일은 runfile에 대해 ctx.executable로 상호 참조되지 않습니다.
arguments sequence; default = []
작업의 명령줄 인수입니다. 문자열 또는 actions.args() 객체 목록이어야 합니다.
mnemonic string; or None; default = None
작업에 대한 한 단어로 된 설명입니다(예: CppCompile 또는 GoLink).
progress_message string; or None; default = None
빌드 중에 사용자에게 표시할 진행률 메시지입니다(예: 'Compiling foo.cc to create foo.o'). 메시지에는 %{label}, %{input} 또는 %{output} 패턴이 포함될 수 있으며, 이 패턴은 각각 라벨 문자열, 첫 번째 입력 또는 출력 경로로 대체됩니다. 정적 문자열 대신 패턴을 사용하는 것이 좋습니다. 전자가 더 효율적이기 때문입니다.
use_default_shell_env default = False
작업이 내장 셸 환경을 사용해야 하는지 여부를 나타냅니다.
env dict; or None; default = None
환경 변수 사전을 설정합니다.
execution_requirements dict; or None; default = None
작업 일정을 예약하기 위한 정보입니다. 유용한 키는 태그를 참고하세요.
input_manifests sequence; or None; default = None
(실험용) 입력 runfiles 메타데이터를 설정하며 일반적으로 resolve_command를 통해 생성됩니다.
exec_group string; or None; default = None
지정된 실행 그룹의 실행 플랫폼에서 작업을 실행합니다. 없는 경우 대상의 기본 실행 플랫폼을 사용합니다.
shadowed_action Action; default = None
지정된 섀도 처리된 작업의 입력과 작업의 입력 목록 및 환경에 추가된 환경을 사용하여 작업을 실행합니다. 작업 환경은 섀도 처리된 작업의 환경 변수를 덮어쓸 수 있습니다. 없는 경우 작업의 입력 및 지정된 환경만 사용합니다.
resource_set callable; or None; 기본값 = None
이 작업이 로컬에서 실행되는 경우 실행 시 리소스 사용량을 추정하는 데 사용되는 리소스 세트 사전을 반환하는 콜백 함수입니다.

이 함수는 두 개의 위치 인수를 허용합니다. 하나는 OS 이름을 나타내는 문자열 (예: 'osx')이고 다른 하나는 작업의 입력 개수를 나타냅니다. 반환된 사전에는 다음 항목이 포함될 수 있으며 각 항목은 부동 또는 int일 수 있습니다.

  • "cpu": CPU 수, 기본값 1
  • "memory": MB, 기본값 250
  • "local_test": 로컬 테스트 수, 기본값 1

이 매개변수가 None로 설정되거나 --experimental_action_resource_set가 false인 경우 기본값이 사용됩니다.

콜백은 최상위 수준이어야 하며 람다 및 중첩 함수는 허용되지 않습니다.

toolchain Label; or string; or None; 기본값 = unbounded

이 작업에 사용되는 실행 파일 또는 도구의 도구 모음 유형입니다. 매개변수가 올바른 실행 플랫폼에서 실행되도록 매개변수를 설정해야 합니다.

지금은 노옵스(no-ops)이지만 도구 모음이 사용될 때 설정하는 것이 좋습니다. 향후 Bazel 출시에서 이 도구가 필요하기 때문입니다.

이 작업을 생성하는 규칙은 이 도구 모음을 'rule()' 함수 내에 정의해야 합니다.

`toolchain` 및 `exec_group` 매개변수가 모두 설정되면 `exec_group` 이 사용됩니다. `exec_group` 이 동일하게 지정하지 않은 경우 오류가 발생합니다.

실행_셸

None actions.run_shell(outputs, inputs=[], tools=unbound, arguments=[], mnemonic=None, command, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)

셸 명령어를 실행하는 작업을 만듭니다. 사용 예 보기

매개변수

매개변수 설명
outputs sequence of Files; 필수
작업의 출력 파일 목록입니다.
inputs sequence of Files; or depset; default = []
작업의 입력 파일을 나열하거나 오프셋합니다.
tools sequence of Files; or depset; default = unbound
작업에 필요한 모든 도구를 나열하거나 역역산합니다. 도구는 추가 실행 파일이 작업에 자동으로 제공되는 입력입니다. 목록에는 파일 또는 FilesToRunProvider 인스턴스가 포함될 수 있습니다.
arguments sequence; default = []
작업의 명령줄 인수입니다. 문자열 또는 actions.args() 객체 목록이어야 합니다.

Bazel은 이 속성의 요소를 명령어에 인수로 전달합니다.명령어는 $1, $2 등의 셸 변수 대체를 사용하여 이러한 인수에 액세스할 수 있습니다. 크기를 확인하기 전에 Args 객체가 평면화되므로 크기를 알 수 없는 Args 객체가 있는 경우 모든 후속 문자열은 예측할 수 없는 색인에 포함됩니다. 확정되지 않은 크기의 Args 객체와 함께 $@ (모든 인수 검색)를 사용하는 것이 유용할 수 있습니다.

command가 문자열 목록인 경우 이 매개변수를 사용할 수 없습니다.

mnemonic string; or None; default = None
작업에 대한 한 단어로 된 설명입니다(예: CppCompile 또는 GoLink).
command string; or sequence of strings; 필수
실행할 셸 명령어입니다. 문자열 (권장) 또는 문자열 (지원 중단됨)일 수 있습니다.

command이 문자열인 경우 sh -c <command> "" <arguments>에 의해 실행되는 것처럼 실행됩니다. 즉, arguments의 요소를 명령어에 $1, $2 (또는 Windows 배치를 사용하는 경우 %1, %2) 등으로 사용할 수 있습니다. argumentsactions.args() 객체가 있는 경우 해당 콘텐츠는 명령줄에 하나씩 추가되므로 $i가 Args 객체 내 개별 문자열을 참조할 수 있습니다. 알 수 없는 크기의 Args 객체가 arguments의 일부로 전달되는 경우 문자열이 알 수 없는 색인에 있게 됩니다. 이 경우에는 $@ 셸 대체 (모든 인수 검색)가 유용할 수 있습니다.

(지원 중단됨) command가 문자열 시퀀스인 경우 첫 번째 항목은 실행 파일이며 나머지 항목은 인수입니다. 이 양식을 사용하는 경우 arguments 매개변수를 제공하지 않아야 합니다. 이 양식은 지원이 중단되었으며 곧 삭제됩니다. `--incompatible_run_shell_command_string`으로 사용 중지됩니다. 이 플래그를 사용하여 코드가 호환되는지 확인하세요.

Bazel은 genrule과 마찬가지로 동일한 셸을 사용하여 명령어를 실행합니다.

progress_message string; or None; default = None
빌드 중에 사용자에게 표시할 진행률 메시지입니다(예: 'Compiling foo.cc to create foo.o'). 메시지에는 %{label}, %{input} 또는 %{output} 패턴이 포함될 수 있으며, 이 패턴은 각각 라벨 문자열, 첫 번째 입력 또는 출력 경로로 대체됩니다. 정적 문자열 대신 패턴을 사용하는 것이 좋습니다. 전자가 더 효율적이기 때문입니다.
use_default_shell_env default = False
작업이 내장 셸 환경을 사용해야 하는지 여부를 나타냅니다.
env dict; or None; default = None
환경 변수 사전을 설정합니다.
execution_requirements dict; or None; default = None
작업 일정을 예약하기 위한 정보입니다. 유용한 키는 태그를 참고하세요.
input_manifests sequence; or None; default = None
(실험용) 입력 runfiles 메타데이터를 설정하며 일반적으로 resolve_command를 통해 생성됩니다.
exec_group string; or None; default = None
지정된 실행 그룹의 실행 플랫폼에서 작업을 실행합니다. 없는 경우 대상의 기본 실행 플랫폼을 사용합니다.
shadowed_action Action; default = None
작업의 입력 목록에 추가된 지정된 섀도 처리된 작업의 검색된 입력을 사용하여 작업을 실행합니다. 없는 경우 작업의 입력만 사용합니다.
resource_set callable; or None; 기본값 = None
로컬에서 실행되는 경우 리소스 사용량을 추정하는 콜백 함수입니다. ctx.actions.run()를 참고하세요.
toolchain Label; or string; or None; 기본값 = unbounded

이 작업에 사용되는 실행 파일 또는 도구의 도구 모음 유형입니다. 매개변수가 올바른 실행 플랫폼에서 실행되도록 매개변수를 설정해야 합니다.

지금은 노옵스(no-ops)이지만 도구 모음이 사용될 때 설정하는 것이 좋습니다. 향후 Bazel 출시에서 이 도구가 필요하기 때문입니다.

이 작업을 생성하는 규칙은 이 도구 모음을 'rule()' 함수 내에 정의해야 합니다.

`toolchain` 및 `exec_group` 매개변수가 모두 설정되면 `exec_group` 이 사용됩니다. `exec_group` 이 동일한 툴체인을 지정하지 않으면 오류가 발생합니다.

None actions.symlink(output, target_file=None, target_path=None, is_executable=False, progress_message=None)

파일 시스템에 심볼릭 링크를 작성하는 작업을 만듭니다.

이 함수는 target_file 또는 target_path 중 하나만 지정하여 호출해야 합니다.

target_file를 사용하는 경우 declare_file() 또는 declare_directory()output를 선언하고 target_file 유형과 일치시킵니다. 이렇게 하면 심볼릭 링크가 target_file을 가리킵니다. 심볼릭 링크 또는 대상의 대상이 변경될 때마다 Bazel이 이 작업의 출력을 무효화합니다.

그 외의 경우에는 target_path를 사용할 때 declare_symlink()output를 선언합니다. 이 경우 심볼릭 링크는 target_path를 가리킵니다. Bazel은 심볼릭 링크를 확인하지 않으며 이 작업의 출력은 심볼릭 링크의 텍스트 콘텐츠 (readlink() 값)가 변경될 때만 무효화됩니다. 특히, 이는 독립된 심볼릭 링크를 만드는 데 사용할 수 있습니다.

매개변수

매개변수 설명
output 필수
이 작업의 출력입니다.
target_file File; or None; default = None
출력 심볼릭 링크가 가리키는 파일.
target_path string; or None; default = None
출력 심볼릭 링크가 가리키는 정확한 경로입니다. 정규화 또는 다른 처리가 적용되지 않습니다.
is_executable 기본값 = False
target_path이 아닌 target_file에서만 사용할 수 있습니다. true인 경우 작업이 실행될 때 target_file의 경로가 실행 가능한지 확인하고, 그렇지 않은 경우 오류가 보고됩니다. is_executable를 False로 설정해도 대상이 실행 불가한 것은 아니며 검증이 실행되지 않은 것입니다.

이 경우 target_path에는 일회용 심볼릭 링크가 없을 수 있으므로 이 기능은 의미가 없습니다.

progress_message string; or None; 기본값 = None
빌드 중에 사용자에게 표시할 진행률 메시지입니다.

템플릿_사전

TemplateDict actions.template_dict()

실험용. 이 API는 실험용이며 언제든지 변경될 수 있습니다. 여기에 의존하지 마세요. --+experimental_lazy_template_expansion를 설정하여 실험용으로 사용 설정할 수 있습니다.
실험용: 메모리 효율적인 템플릿 확장을 위해 TemplateDict 객체를 반환합니다.

write

None actions.write(output, content, is_executable=False)

파일 쓰기 작업을 만듭니다. 작업이 실행되면 지정된 콘텐츠가 파일에 작성됩니다. 분석 단계에서 제공되는 정보를 사용하여 파일을 생성하는 데 사용됩니다. 파일이 크고 정적 콘텐츠가 많은 경우 expand_template를 사용하는 것이 좋습니다.

매개변수

매개변수 설명
output 필수
출력 파일입니다.
content string; or Args, 파일의 필수 콘텐츠
. 문자열 또는 actions.args() 객체일 수 있습니다.
is_executable default = False
출력 파일의 실행 가능 여부입니다.