이 페이지에서는 한 버전에서 다른 버전으로 이전하는 등 이전 버전과의 호환성을 처리하는 방법과 호환되지 않는 변경사항을 전달하는 방법에 관한 정보를 제공합니다.
Bazel은 진화하고 있습니다. LTS 메이저 버전의 일부로 출시된 마이너 버전은 완전히 이전 버전과 호환됩니다. 새로운 주요 LTS 버전에는 이전 작업이 필요한 호환되지 않는 변경사항이 포함될 수 있습니다. Bazel의 출시 모델에 대한 자세한 내용은 출시 모델 페이지를 참조하세요.
요약
- 브레이킹 체인지에는
--incompatible_*
플래그를 사용하는 것이 좋습니다. - 모든
--incompatible_*
플래그에 대해 GitHub 문제는 동작 변경사항을 설명하고 이전 레시피를 제공하는 것을 목표로 합니다. - 호환되지 않는 플래그는 기본적으로 플래그를 사용 설정하지 않고 최신 LTS 출시 버전으로 백포팅하는 것이 좋습니다.
--experimental_*
플래그로 보호되는 API 및 동작은 언제든지 변경될 수 있습니다.--experimental_*
또는--incompatible_*
플래그를 사용하여 프로덕션 빌드를 실행하면 안 됩니다.
정책 준수 방법
안정적인 기능이란 무엇인가요?
일반적으로 --experimental_...
플래그가 없는 API 또는 동작은 Bazel에서 안정적이고 지원되는 기능으로 간주됩니다.
구체적인 사항은 다음과 같습니다.
- Starlark 언어 및 API
- Bazel과 함께 제공되는 규칙
- Bazel API(예: Remote Execution API 또는 Build Event Protocol)
- 플래그 및 시맨틱스
호환되지 않는 변경사항 및 이전 레시피
새 출시 버전의 호환되지 않는 모든 변경사항에 대해 Bazel팀은 코드 업데이트 (BUILD
및 .bzl
파일, 스크립트의 Bazel 사용, Bazel API 사용 등)를 도와주는 이전 레시피를 제공하는 것을 목표로 합니다.
호환되지 않는 변경사항에는 관련 --incompatible_*
플래그와 관련 GitHub 문제가 있어야 합니다.
호환되지 않는 플래그 및 관련 변경사항은 기본적으로 플래그를 사용 설정하지 않고 최신 LTS 출시 버전으로 백포팅하는 것이 좋습니다. 이를 통해 사용자는 다음 LTS 버전을 사용할 수 있기 전에 호환되지 않는 변경사항에 관해 이전할 수 있습니다.
호환되지 않는 변경사항 전달
호환되지 않는 변경사항에 관한 기본 정보 출처는 'incompatible-change' 라벨로 표시된 GitHub 문제입니다.
호환되지 않는 모든 변경사항에는 문제가 다음과 같이 지정됩니다.
- 호환되지 않는 변경사항을 제어하는 플래그의 이름입니다.
- 변경된 기능에 대한 설명
- 마이그레이션 레시피
호환되지 않는 변경사항이 HEAD에서 HEAD로 마이그레이션될 준비가 되면(따라서 다음 Bazel 롤링 출시에서도) migration-ready
라벨로 표시되어야 합니다. 호환되지 않는 변경 문제는 HEAD에서 호환되지 않는 플래그가 뒤집히면 종료됩니다.