이 페이지에서는 이전 버전과의 호환성을 처리하는 방법과 한 버전에서 다른 출시 버전으로의 마이그레이션과 호환되지 않는 변경사항입니다.
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' 라벨과 함께 사용할 수 있습니다.
호환되지 않는 모든 변경사항에 관해 문제에는 다음 내용이 명시됩니다.
- 호환되지 않는 변경사항을 제어하는 플래그의 이름입니다.
- 변경된 기능에 대한 설명
- 마이그레이션 레시피
호환되지 않는 변경사항을 HEAD에서 Bazel을 사용하여 이전할 준비가 되면 (따라서 다음 Bazel 롤링 출시에서도 이전) migration-ready
라벨로 표시해야 합니다. 호환되지 않는 플래그가 HEAD에서 뒤집어지면 호환되지 않는 변경 문제가 종결됩니다.