이전 버전과의 호환성

문제 신고 소스 보기 1박 · 7.4 에서 자세한 내용을 확인하실 수 있습니다. 7.3 · 7.2 · 7.1 · 7.0 · 6.5

이 페이지에서는 이전 버전과의 호환성을 처리하는 방법과 한 버전에서 다른 버전으로의 마이그레이션과 확인할 수 있습니다

Bazel은 진화하고 있습니다. LTS 주요 버전의 일부로 출시된 부 버전은 이전 버전과 완전히 호환됩니다. 새로운 주요 LTS 출시에는 일부 이전 작업이 필요한 호환되지 않는 변경사항이 포함될 수 있습니다. Bazel의 출시 모델에 대한 자세한 내용은 Model 페이지

요약

  1. 중단 변경사항에는 --incompatible_* 플래그를 사용하는 것이 좋습니다.
  2. 모든 --incompatible_* 플래그에 대해 GitHub 문제는 마이그레이션 레시피를 제공하는 것을 목표로 합니다
  3. 호환되지 않는 플래그는 최신 LTS로 백포팅하는 것이 좋습니다. 기본적으로 플래그를 사용 설정하지 않고
  4. --experimental_* 플래그로 보호되는 API 및 동작은 언제든지 변경될 수 있습니다. 있습니다.
  5. --experimental_* 또는 --incompatible_* 플래그를 사용하여 프로덕션 빌드를 실행하지 마세요.

이 정책 준수 방법

안정적인 기능이란 무엇인가요?

일반적으로 --experimental_... 플래그가 없는 API 또는 동작이 고려됨 안정적이고 지원되는 Bazel 기능

여기에는 다음이 포함됩니다.

  • Starlark 언어 및 API
  • Bazel과 함께 번들로 제공되는 규칙
  • 원격 실행 API 또는 빌드 이벤트 프로토콜과 같은 Bazel API
  • 플래그 및 플래그의 의미

호환되지 않는 변경사항 및 마이그레이션 레시피

Bazel팀은 새 버전의 모든 비호환 변경사항에 대해 코드(BUILD.bzl 파일, 스크립트의 모든 Bazel 사용, Bazel API 사용 등)를 업데이트하는 데 도움이 되는 이전 레시피를 제공하는 것을 목표로 합니다.

호환되지 않는 변경사항에는 연결된 --incompatible_* 플래그와 확인할 수 있습니다

호환되지 않는 플래그 및 관련 변경사항은 최신 LTS 버전을 대상으로 합니다. 이렇게 하면 다음 LTS 버전이 출시되기 전에 사용자가 호환되지 않는 변경사항을 이전할 수 있습니다.

호환되지 않는 변경사항 전달

호환되지 않는 변경사항에 관한 정보의 기본 출처는 GitHub 문제입니다. 'incompatible-change' 라벨과 함께 사용할 수 있습니다.

호환되지 않는 모든 변경사항에 관해 문제에는 다음 내용이 명시됩니다.

  • 호환되지 않는 변경사항을 제어하는 플래그 이름
  • 변경된 기능에 대한 설명
  • 마이그레이션 레시피

호환되지 않는 변경사항을 HEAD에서 Bazel을 사용하여 이전할 준비가 된 경우 (따라서 다음 Bazel 롤링 출시에서도) migration-ready 라벨을 지정합니다. 호환되지 않는 플래그가 HEAD에서 전환되면 호환되지 않는 변경사항 문제가 종료됩니다.