이 페이지에서는 한 버전에서 다른 버전으로 이전하는 방법, 호환되지 않는 변경사항을 전달하는 방법을 비롯하여 하위 호환성을 처리하는 방법에 관한 정보를 제공합니다.
Bazel은 진화하고 있습니다. LTS 주 버전의 일부로 출시된 부 버전은 완전히 하위 호환됩니다. 주요 LTS 출시 간의 변경사항에는 일부 이전 작업이 필요한 비호환 변경사항이 포함될 수 있습니다. Bazel 출시 주기의 작동 방식에 관한 자세한 내용은 Bazel 장기적 지원 (LTS) 출시 공지를 참고하세요.
요약
- 중단 변경사항에는
--incompatible_*
플래그를 사용하는 것이 좋습니다. - 모든
--incompatible_*
플래그에 대해 GitHub 문제는 동작의 변경사항을 설명하고 이전 레시피를 제공하는 것을 목표로 합니다. --experimental_*
플래그로 보호되는 API 및 동작은 언제든지 변경될 수 있습니다.--experimental_*
또는--incompatible_*
플래그를 사용하여 프로덕션 빌드를 실행하지 마세요.
이 정책 준수 방법
안정적인 기능이란 무엇인가요?
일반적으로 --experimental_...
플래그가 없는 API 또는 동작은 Bazel에서 안정적이고 지원되는 기능으로 간주됩니다.
여기에는 다음이 포함됩니다.
- Starlark 언어 및 API
- Bazel과 번들로 묶인 규칙
- 원격 실행 API 또는 빌드 이벤트 프로토콜과 같은 Bazel API
- 플래그 및 시맨틱
호환되지 않는 변경사항 및 이전 레시피
Bazel팀은 새 출시에서 호환되지 않는 모든 변경사항에 대해 코드(BUILD
및 .bzl
파일, 스크립트의 모든 Bazel 사용, Bazel API 사용 등)를 업데이트하는 데 도움이 되는 이전 레시피를 제공하는 것을 목표로 합니다.
호환되지 않는 변경사항에는 연결된 --incompatible_*
플래그와 상응하는 GitHub 문제가 있어야 합니다.
호환되지 않는 변경사항 전달
비호환 변경사항에 관한 기본 정보 소스는 'incompatible-change' 라벨로 표시된 GitHub 문제입니다.
호환되지 않는 모든 변경사항에 대해 문제는 다음을 지정합니다.
- 호환되지 않는 변경사항을 제어하는 플래그 이름
- 변경된 기능에 대한 설명
- 이전 레시피
호환되지 않는 변경사항이 HEAD에서 Bazel을 사용하여 이전할 준비가 되면 (따라서 다음 Bazel 출시 버전에서도) migration-ready
라벨로 표시해야 합니다. 호환되지 않는 플래그가 HEAD에서 전환되면 호환되지 않는 변경사항 문제가 종료됩니다.