각 BEP 이벤트 유형에는 고유한 시맨틱이 있으며, 이 내용은 build_event_stream.proto. 다음 용어집에서는 각 이벤트 유형을 설명합니다.
취소됨
다른 이벤트와 달리 Aborted
에는 상응하는 ID 유형이 없습니다.
Aborted
이벤트는 다른 유형의 이벤트를 대체합니다. 이 이벤트는
빌드가 조기에 종료되었고 아래에 표시되는 이벤트 ID가 생성되지 않았습니다.
평소처럼요. Aborted
에는 설명하는 열거형 및 사용자 친화적인 설명이 포함되어 있습니다.
확인할 수 있습니다
예를 들어 사용자가 Bazel을 인터럽트할 때 빌드가 대상을 평가하는 경우 BEP에는 다음과 같은 이벤트가 포함됩니다.
{
"id": {
"targetCompleted": {
"label": "//:foo",
"configuration": {
"id": "544e39a7f0abdb3efdd29d675a48bc6a"
}
}
},
"aborted": {
"reason": "USER_INTERRUPTED"
}
}
ActionExecuted
특정 애플리케이션의 실행에 대한 세부정보를 제공합니다.
빌드의 작업 기본적으로 이 이벤트는
근본 원인 파악을 지원하기 위해 실패한 작업에 대해서만 BEP에 포함됨
빌드 실패의 비율 사용자는 --build_event_publish_all_actions
플래그를 설정할 수 있습니다.
ActionExecuted
이벤트를 모두 포함합니다.
BuildFinished
명령어가 완료된 후 단일 BuildFinished
이벤트가 전송되며
명령어에 대한 종료 코드가 포함됩니다. 이 이벤트는 신뢰할 수 있는
성공/실패 정보
BuildMetadata
--build_metadata
플래그의 파싱된 콘텐츠를 포함합니다. 이미 존재하는 이벤트입니다.
외부 데이터 (예:
참조).
BuildMetrics
단일 BuildMetrics
이벤트가 모든 명령어가 끝날 때 전송되며
카운터/게이지를 사용하여 전체 프로세스 동안 빌드 도구의 동작을
명령어와 함께 사용하면 됩니다 이러한 측정항목은 실제로 완료된 작업이며 캐시된 것으로 집계되지 않음을 나타냅니다.
공유하는 것입니다.
Java 가비지가 없으면 memory_metrics
가 채워지지 않을 수 있습니다.
수집될 수 있기 때문입니다 사용자는
가비지를 강제로 처리하는 --memory_profile=/dev/null
옵션
수집기를 사용하여 memory_metrics
를 채웁니다.
{
"id": {
"buildMetrics": {}
},
"buildMetrics": {
"actionSummary": {
"actionsExecuted": "1"
},
"memoryMetrics": {},
"targetMetrics": {
"targetsLoaded": "9",
"targetsConfigured": "19"
},
"packageMetrics": {
"packagesLoaded": "5"
},
"timingMetrics": {
"cpuTimeInMs": "1590",
"wallTimeInMs": "359"
}
}
}
BuildStarted
BEP 스트림의 첫 번째 이벤트인 BuildStarted
에는
명령을 실행합니다.
BuildToolLogs
명령어 끝에 URI를 포함한 단일 BuildToolLogs
이벤트가 전송됩니다.
이해 또는 디버깅에 도움이 될 수 있는 빌드 도구에서 생성된 파일
빌드 도구 동작을 볼 수 있습니다. 일부 정보는 인라인으로 포함될 수 있습니다.
{
"id": {
"buildToolLogs": {}
},
"lastMessage": true,
"buildToolLogs": {
"log": [
{
"name": "elapsed time",
"contents": "MC4xMjEwMDA="
},
{
"name": "process stats",
"contents": "MSBwcm9jZXNzOiAxIGludGVybmFsLg=="
},
{
"name": "command.profile.gz",
"uri": "file:///tmp/.cache/bazel/_bazel_foo/cde87985ad0bfef34eacae575224b8d1/command.profile.gz"
}
]
}
}
CommandLine
BEP에는 모든 CommandLine
이벤트의 표현을 포함하는
명령줄 인수 (옵션 및 해석되지 않은 인수 포함)
각 CommandLine
이벤트의 StructuredCommandLineId
에는
는 그것이 전달하는 표현을 나타냅니다. 이러한 이벤트 세 개가 BEP에 표시됩니다.
"original"
: Bazel이 Bazel에서 수신한 것으로 재구성된 명령줄 클라이언트(.rc 파일에서 가져온 시작 옵션 제외)"canonical"
: .rc 파일이 확장되고 호출 정책이 적용되었습니다."tool"
:--experimental_tool_command_line
옵션에서 채워집니다. 이 BEP를 통해 Bazel을 래핑하는 도구의 명령줄을 전달하는 데 유용합니다. base64로 인코딩된CommandLine
바이너리 프로토콜 버퍼 메시지일 수 있습니다. 이 메서드는 직접 사용되는 문자열 또는 파싱되지만 해석되지 않는 문자열( 도구 옵션이 Bazel 옵션과 다를 수 있음).
구성
configuration
마다 Configuration
이벤트가 전송됩니다.
사용되는 객체입니다. 1개 이상의 구성 이벤트가
항상 존재해야 합니다. id
는 TargetConfigured
에서 재사용되며
TargetComplete
이벤트 ID이며,
다중 구성 빌드를 지원합니다
{
"id": {
"configuration": {
"id": "a5d130b0966b4a9ca2d32725aa5baf40e215bcfc4d5cdcdc60f5cc5b4918903b"
}
},
"configuration": {
"mnemonic": "k8-fastbuild",
"platformName": "k8",
"cpu": "k8",
"makeVariable": {
"COMPILATION_MODE": "fastbuild",
"TARGET_CPU": "k8",
"GENDIR": "bazel-out/k8-fastbuild/bin",
"BINDIR": "bazel-out/k8-fastbuild/bin"
}
}
}
ConvenienceSymlinksIdentified
실험용. --experimental_convenience_symlinks_bep_event
옵션이 설정되면 단일 ConvenienceSymlinksIdentified
이벤트는
작업공간의 심볼릭 링크를 관리하는 방법을 나타내는 build
명령어입니다.
이를 통해 Bazel을 원격으로 호출하는 도구를 빌드한 다음 로컬
작업 영역이라고 할 수 있습니다
{
"id": {
"convenienceSymlinksIdentified":{}
},
"convenienceSymlinksIdentified": {
"convenienceSymlinks": [
{
"path": "bazel-bin",
"action": "CREATE",
"target": "execroot/google3/bazel-out/k8-fastbuild/bin"
},
{
"path": "bazel-genfiles",
"action": "CREATE",
"target": "execroot/google3/bazel-out/k8-fastbuild/genfiles"
},
{
"path": "bazel-out",
"action": "CREATE",
"target": "execroot/google3/bazel-out"
}
]
}
}
가져오기
명령어 실행 과정에서 가져오기 작업이 발생했음을 나타냅니다. 다른 이벤트와 달리 캐시된 가져오기 결과를 다시 사용하는 경우 이 이벤트는 BEP 스트림에 표시됩니다.
NamedSetOfFiles
NamedSetOfFiles
이벤트는 다음과 일치하는 구조를 보고합니다.
명령어 평가 중에 생성된 파일의 depset
임시로 포함된 종속 항목은 NamedSetOfFilesId
로 식별됩니다.
스트림의 NamedSetOfFiles
이벤트 해석에 관한 자세한 내용은
BEP 예시 페이지
OptionsParsed
단일 OptionsParsed
이벤트는 명령어에 적용된 모든 옵션을 나열합니다.
시작 옵션을 명령어 옵션에서 분리하기 여기에는
InvocationPolicy(있는 경우)
{
"id": {
"optionsParsed": {}
},
"optionsParsed": {
"startupOptions": [
"--max_idle_secs=10800",
"--noshutdown_on_low_sys_mem",
"--connect_timeout_secs=30",
"--output_user_root=/tmp/.cache/bazel/_bazel_foo",
"--output_base=/tmp/.cache/bazel/_bazel_foo/a61fd0fbee3f9d6c1e30d54b68655d35",
"--deep_execroot",
"--idle_server_tasks",
"--write_command_log",
"--nowatchfs",
"--nofatal_event_bus_exceptions",
"--nowindows_enable_symlinks",
"--noclient_debug",
],
"cmdLine": [
"--enable_platform_specific_config",
"--build_event_json_file=/tmp/bep.json"
],
"explicitCmdLine": [
"--build_event_json_file=/tmp/bep.json"
],
"invocationPolicy": {}
}
}
PatternExpanded
PatternExpanded
이벤트는 패턴과 일치하는 모든 타겟 집합을 나타냅니다.
사용할 수 있습니다 성공적인 명령어의 경우 단일 이벤트가 있습니다.
PatternExpandedId
의 모든 패턴 및
PatternExpanded
이벤트의 하위 요소입니다. 패턴이
test_suite
: test_suite
에 의해 포함된 테스트 타겟 집합입니다. 각
BEP에 추가 Aborted
가 포함되어 있는 경우
이벤트를 식별하는 PatternExpandedId
이벤트.
{
"id": {
"pattern": {
"pattern":["//base:all"]
}
},
"children": [
{"targetConfigured":{"label":"//base:foo"}},
{"targetConfigured":{"label":"//base:foobar"}}
],
"expanded": {
"testSuiteExpansions": {
"suiteLabel": "//base:suite",
"testLabels": "//base:foo_test"
}
}
}
진행률
진행률 이벤트에는 Bazel에서 생성된 표준 출력 및 표준 오류가 포함됩니다. kube-APIserver입니다 이러한 이벤트는 논리적 '상위 요소'가 발표하지 않은 이벤트를 공지 이벤트( 특히 NamedSetOfFiles에 해당해야 합니다.)
TargetComplete
다음을 완료하는 각 (target, configuration, aspect)
조합의 경우
실행 단계에서는 TargetComplete
이벤트가 BEP에 포함되어 있습니다. 이벤트에 포함
대상의 성공/실패 및 대상의 요청된 출력 그룹
{
"id": {
"targetCompleted": {
"label": "//examples/py:bep",
"configuration": {
"id": "a5d130b0966b4a9ca2d32725aa5baf40e215bcfc4d5cdcdc60f5cc5b4918903b"
}
}
},
"completed": {
"success": true,
"outputGroup": [
{
"name": "default",
"fileSets": [
{
"id": "0"
}
]
}
]
}
}
TargetConfigured
분석 단계를 완료하는 각 대상에 대해 TargetConfigured
이벤트는 다음과 같습니다.
BEP에 포함되어 있습니다 대상의 '규칙 종류'에 대한 신뢰할 수 있는 소스입니다.
속성의 값을 제공합니다. 대상에 적용된 구성은 공지된
이벤트의 하위 요소를 만듭니다.
예를 들어 --experimental_multi_cpu
옵션을 사용하여 빌드하면 다음과 같은 결과가 발생할 수 있습니다.
두 개의TargetConfigured
구성:
{
"id": {
"targetConfigured": {
"label": "//starlark_configurations/multi_arch_binary:foo"
}
},
"children": [
{
"targetCompleted": {
"label": "//starlark_configurations/multi_arch_binary:foo",
"configuration": {
"id": "c62b30c8ab7b9fc51a05848af9276529842a11a7655c71327ade26d7c894c818"
}
}
},
{
"targetCompleted": {
"label": "//starlark_configurations/multi_arch_binary:foo",
"configuration": {
"id": "eae0379b65abce68d54e0924c0ebcbf3d3df26c6e84ef7b2be51e8dc5b513c99"
}
}
}
],
"configured": {
"targetKind": "foo_binary rule"
}
}
TargetSummary
실행되는 각 (target, configuration)
쌍의 경우 TargetSummary
이벤트는 구성된
타겟의 실행 및 구성된 타겟에 적용된 모든 관점을 확인할 수 있습니다.
TestResult
테스트가 요청되면 테스트를 시도할 때마다 TestResult
이벤트가 전송됩니다.
샤드를 생성하고 테스트별로 실행합니다. 이를 통해 BEP 소비자는
테스트 작업이 테스트에 실패했으며 테스트 결과 (예: 로그,
test.xml 파일)이 있는지 확인하세요.
TestSummary
테스트가 요청되면 각 테스트 (target,
configuration)
에 테스트의 결과를 해석하는 데 필요한 정보가 포함된 TestSummary
이벤트가 전송됩니다.
있습니다. 사용 설정하려면 테스트당 시도, 샤드, 실행 횟수가 포함됩니다.
BEP 소비자가 이러한 측정기준에서 아티팩트를 구별합니다. 시도 횟수
테스트당 및 실행은 집계 TestStatus
를 생성하는 동안 고려됩니다.
FLAKY
테스트를 FAILED
테스트와 구별
UnstructuredCommandLine
CommandLine과 달리 이 이벤트는 파싱되지 않은 명령줄을 전달합니다.
모두 확장한 후 빌드 도구에 표시되는 문자열 형식의 플래그를
.bazelrc
파일 및
--config
플래그를 고려합니다.
UnstructuredCommandLine
이벤트를 사용하면
실행할 수 있습니다
WorkspaceConfig
단일 WorkspaceConfig
이벤트에는
다른 작업공간도 마찬가지입니다(예: 실행 루트).
WorkspaceStatus
단일 WorkspaceStatus
이벤트에 작업공간 상태의 결과가 포함됩니다.
명령어를 사용하세요.