이전 버전과의 호환성

문제 신고 소스 보기 Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

이 페이지에서는 한 버전에서 다른 버전으로 이전하는 방법, 호환되지 않는 변경사항을 전달하는 방법을 비롯하여 하위 호환성을 처리하는 방법에 관한 정보를 제공합니다.

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

요약

  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_* 플래그와 상응하는 GitHub 문제가 있어야 합니다.

호환되지 않는 플래그와 관련 변경사항은 기본적으로 플래그를 사용 설정하지 않고 최신 LTS 출시로 백포팅하는 것이 좋습니다. 이렇게 하면 다음 LTS 버전이 출시되기 전에 사용자가 호환되지 않는 변경사항을 이전할 수 있습니다.

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

비호환 변경사항에 관한 기본 정보 소스는 'incompatible-change' 라벨로 표시된 GitHub 문제입니다.

호환되지 않는 모든 변경사항에 대해 문제는 다음을 지정합니다.

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

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