Bazel 플래그 요약본

Bazel의 광범위한 명령줄 플래그 목록을 탐색하는 것은 쉽지 않을 수 있습니다. 이 페이지에서는 알아야 할 가장 중요한 플래그를 중점적으로 설명합니다.

유용한 일반 옵션

다음 플래그는 명령줄에서 명시적으로 설정해야 합니다.

플래그 설명

--config

.bazelrc 파일의 플래그를 디버깅 또는 출시 빌드용 플래그와 같은 구성으로 정리할 수 있습니다. --config=<group>를 사용하여 추가 구성 그룹을 선택할 수 있습니다.

--keep_going

Bazel은 빌드 및 테스트 실행을 계속할 수 있도록 최대한 노력해야 합니다. 기본적으로 Bazel은 즉시 실패합니다.

--remote_download_outputs

원격 실행 또는 캐싱 (디스크 및 원격 모두)을 사용하는 경우 다음과 같이 모든 (중간) 빌드 아티팩트를 다운로드하겠다는 신호를 Bazel에 보낼 수 있습니다.
--remote_download_outputs=all
기본적으로 Bazel은 최종 바이너리와 같은 최상위 아티팩트와 로컬 작업에 필요한 중간 아티팩트만 다운로드합니다.

--stamp

바이너리에 빌드 정보 (사용자, 타임스탬프)를 추가합니다.

빌드 및 테스트 문제 찾기

다음 플래그는 Bazel 빌드 또는 테스트 오류를 더 잘 이해하는 데 도움이 됩니다.

플래그 설명

--announce_rc

사용자 정의, 머신 정의 또는 프로젝트 정의 .bazelrc 파일을 통해 암시적으로 설정되는 플래그를 표시합니다.

--auto_output_filter

기본적으로 Bazel은 로그 스팸을 방지하려고 하며 명령줄에서 요청된 패키지 및 하위 패키지의 컴파일러 경고와 Starlark 디버그 출력만 출력합니다. 모든 필터링을 사용 중지하려면 --auto_output_filter=none를 설정하세요.

--sandbox_debug

샌드박스 오류를 자세히 살펴볼 수 있습니다. Bazel에서 기본적으로 빌드를 샌드박스 처리하는 이유와 샌드박스 처리되는 항목에 관한 자세한 내용은 샌드박스 문서를 참고하세요.

--subcommands (-s)

빌드 성공 여부와 관계없이 Bazel이 빌드 중에 실행하는 모든 명령어의 포괄적인 목록을 표시합니다.

시작

플래그 설명

--bazelrc

.bazelrc 파일에서 기본 Bazel 옵션을 지정할 수 있습니다. .bazelrc 파일이 여러 개 있는 경우 --bazelrc=<path to the .bazelrc file>를 추가하여 사용되는 .bazelrc 파일을 선택할 수 있습니다.

--host_jvm_args

Bazel 서버에서 사용하는 RAM의 양을 제한합니다. 예를 들어 다음은 Bazel 힙 크기를 3GB로 제한합니다.
--host_jvm_args=-Xmx3g

--output_base

Bazel의 출력 트리를 제어합니다. Bazel은 로그를 비롯한 빌드 출력을 소스 트리 자체에 저장하지 않습니다. 대신 이 용도로 고유한 출력 트리를 사용합니다.

Bazel 테스트

다음 플래그는 Bazel 테스트와 관련이 있습니다.

플래그 설명

--java_debug

Java 테스트가 실행되기 전에 디버거 연결을 기다리게 합니다.

--runs_per_test

테스트를 실행할 횟수입니다. 예를 들어 테스트를 N번 실행하려면 --runs_per_test=N를 추가합니다. 이는 불안정한 테스트를 디버그하고 수정사항으로 인해 테스트가 일관되게 통과하는지 확인하는 데 유용할 수 있습니다.

--test_filter

이 플래그는 단일 테스트 메서드를 반복할 때 특히 유용합니다(예: 변경사항으로 인해 테스트가 중단되는 경우). 테스트 모음의 모든 테스트 메서드를 다시 실행하는 대신 실패한 특정 테스트에만 집중할 수 있습니다. 이를 통해 더 빠른 의견을 제공하고 더 효율적으로 디버깅할 수 있습니다. 이 플래그는 실시간 테스트 출력을 위해 --test_output=streamed와 함께 자주 사용됩니다.

--test_output

출력 모드를 지정합니다. 기본적으로 Bazel은 로컬 로그 파일에 테스트 출력을 캡처합니다. 중단된 테스트를 반복할 때는 일반적으로 --test_output=streamed를 사용하여 테스트 출력을 실시간으로 확인하는 것이 좋습니다.

Bazel 실행

다음 플래그는 Bazel 실행과 관련이 있습니다.

플래그 설명

--run_under

실행 파일을 호출하는 방식을 변경합니다. 예를 들어 --run_under="strace -c"는 디버깅에 일반적으로 사용됩니다.

사용자별 bazelrc 옵션

다음 플래그는 사용자별 .bazelrc 옵션과 관련이 있습니다.

플래그 설명

--disk_cache

Bazel이 작업 및 작업 출력을 읽고 쓸 수 있는 디렉터리의 경로입니다. 디렉터리가 없으면 생성됩니다. 명령어에 --disk_cache=<path>를 추가하여 여러 브랜치 또는 작업공간 간에 빌드 아티팩트를 공유하고 Bazel 빌드 속도를 높일 수 있습니다.

--jobs

실행할 동시 작업 수입니다. 이는 일반적으로 원격 빌드 클러스터가 로컬에서 코어보다 더 많은 작업을 실행하는 원격 실행을 사용할 때만 필요합니다.

--local_resources

로컬에서 실행되는 작업에서 소비되는 CPU 또는 RAM의 양을 제한합니다.

--sandbox_base

샌드박스가 이 경로 아래에 샌드박스 디렉터리를 만들 수 있습니다. 기본적으로 Bazel은 샌드박스 처리된 로컬 작업을 실행하므로 빌드에 오버헤드가 추가됩니다.

프로젝트별 bazelrc 옵션

다음 플래그는 프로젝트별 .bazelrc 옵션과 관련이 있습니다.

플래그 설명

--flaky_test_attempts

테스트 실패 시 각 테스트를 지정된 횟수까지 재시도합니다. 이는 지속적 통합에 특히 유용합니다. 통과하기 위해 두 번 이상 시도해야 하는 테스트는 테스트 요약에서 FLAKY으로 표시됩니다.

--remote_cache

캐싱 엔드포인트의 URI입니다. 원격 캐싱을 설정하면 Bazel 빌드 속도를 높일 수 있습니다. 로컬 디스크 캐시와 결합할 수 있습니다.

--remote_download_regex

--remote_download_outputs 설정과 관계없이 경로가 이 패턴과 일치하는 원격 빌드 출력을 다운로드하도록 강제합니다. 이 플래그를 반복하여 여러 패턴을 지정할 수 있습니다.

--remote_executor

원격 실행 엔드포인트의 HOST 또는 HOST:PORT 원격 실행 서비스를 사용하는 경우 전달합니다. --remote_instance_name=<name>를 추가해야 하는 경우가 많습니다.

--remote_instance_name

원격 실행 API에서 instance_name로 전달할 값입니다.

--show-timestamps

지정된 경우 Bazel에서 생성한 각 메시지에 메시지가 표시된 시간을 지정하는 타임스탬프가 추가됩니다. 이는 CI 시스템에서 어떤 단계가 얼마나 걸렸는지 빠르게 파악하는 데 유용합니다.

--spawn_strategy

원격 실행을 사용하더라도 일부 빌드 작업을 로컬에서 실행하는 것이 더 빠를 수 있습니다. 빌드 클러스터의 용량, 네트워크 속도, 네트워크 지연과 같은 요인에 따라 달라집니다.