출시 모델

문제 신고 소스 보기

원본 블로그 게시물에 공지된 것처럼 Bazel 4.0 이상 버전은 순차적 출시와 장기적 지원 (LTS) 출시의 두 가지 출시 트랙을 지원합니다. 이 페이지에서는 Bazel의 출시 모델에 대한 최신 정보를 설명합니다.

출시 버전 관리

Bazel은 major.minor.patch 시맨틱 버전 관리 스키마를 사용합니다.

  • 주 버전에는 이전 버전과 호환되지 않는 기능이 포함되어 있습니다. 각 Bazel 주 버전은 LTS 출시 버전입니다.
  • 부 출시 버전에는 이전 버전과 호환되는 버그 수정과 기본 브랜치에서 백포팅된 기능이 포함되어 있습니다.
  • 패치 출시에는 중요한 버그 수정이 포함되어 있습니다.

또한 출시 전 버전은 다음 주 버전 번호에 하이픈과 날짜 서픽스를 추가하여 나타냅니다.

예를 들어 각 유형의 새 출시 버전이 나오면 다음과 같은 버전 번호가 생성됩니다.

  • 메이저: 6.0.0
  • 마이너: 6.1.0
  • 패치: 6.1.2
  • 출시 전: 7.0.0-pre.20230502.1

지원 단계

각 주 Bazel 버전에는 4가지 지원 단계가 있습니다.

  • 롤링: 이 메이저 버전은 아직 출시 전이며 Bazel팀은 HEAD에서 순차적 출시를 게시합니다.
  • 활성: 이 주 버전은 현재 활성 LTS 버전입니다. Bazel팀은 중요한 기능과 버그 수정을 부 출시 버전에 백포트합니다.
  • 유지보수: 이 주 버전은 유지보수 모드의 이전 LTS 출시 버전입니다. Bazel팀은 보안 문제 및 OS 호환성 문제와 관련된 중요한 버그 수정을 이 LTS 출시 버전에 백포팅할 것만 약속합니다.
  • 지원 중단됨: Bazel팀은 더 이상 이 주 버전을 지원하지 않습니다. 모든 사용자는 최신 Bazel LTS 출시 버전으로 이전해야 합니다.

출시 주기

Bazel은 정기적으로 두 가지 출시 트랙의 출시 버전을 게시합니다.

순차적 출시

  • 순차적 출시는 Google Blaze 출시에 맞춰 조정되며 약 2주마다 HEAD에서 출시됩니다. 다음 Bazel LTS 출시 버전의 미리보기입니다.
  • 순차적 출시는 호환되지 않는 변경사항을 제공할 수 있습니다. 주요 브레이킹 체인지에는 호환되지 않는 플래그를 사용하는 것이 좋습니다. 호환되지 않는 변경사항을 출시하는 경우에는 이전 버전과의 호환성 정책을 따라야 합니다.

LTS 출시

  • 주요 출시: 새로운 LTS 출시는 약 12개월마다 HEAD에서 삭제될 것으로 예상됩니다. 새 LTS 출시 버전이 출시되면 즉시 활성 단계로 전환되고 이전 LTS 출시 버전은 유지보수 단계로 들어갑니다.
  • 부 출시: Active LTS 트랙의 새로운 부 버전은 2개월에 한 번 출시될 것으로 예상됩니다.
  • 패치 출시: 활성 및 유지보수 단계의 LTS 출시용 새 패치 버전은 중요한 버그 수정을 위한 요청에 따라 출시될 예정입니다.
  • Bazel LTS 출시 버전은 2년 동안 유지보수 단계에 있으면 지원 중단 단계로 넘어갑니다.

계획된 출시의 경우 GitHub의 출시 문제를 확인하세요.

지원 매트릭스

LTS 출시 지원 단계 최신 버전 지원 종료
Bazel 7 순차적 GitHub 출시 페이지 확인 해당 사항 없음
Bazel 6 활성 6.4.0 2025년 12월
Bazel 5 유지보수 5.4.1 2025년 1월
Bazel 4 유지보수 4.2.4 2024년 1월

모든 Bazel 출시 버전은 GitHub의 출시 페이지에서 확인할 수 있습니다.

출시 절차 및 정책

순차적 출시의 경우 프로세스는 간단합니다. Google 내부 Blaze 출시와 동일한 기준에 따라 약 2주마다 새 버전이 생성됩니다. 빠른 출시 일정으로 인해 순차적 출시의 변경사항은 백포팅하지 않습니다.

LTS 출시의 경우 아래 절차와 정책을 따릅니다.

  1. 출시 버전의 기준 커밋을 결정합니다.
    • 새로운 주 LTS 출시의 경우 기준 커밋은 기본 브랜치의 HEAD입니다.
    • 부 버전 또는 패치 출시의 경우 기준 커밋은 동일한 LTS 출시의 현재 최신 버전의 HEAD입니다.
  2. 기준 커밋에서 release-<version>이라는 이름으로 출시 브랜치를 만듭니다.
  3. PR을 통해 변경사항을 출시 브랜치로 백포팅합니다.
    • 커뮤니티는 관련 GitHub 문제 또는 PR에서 '@bazel-io flag'로 회신하여 특정 커밋을 백포팅할 것을 제안할 수 있습니다. 그러면 Bazel팀에서 해당 커밋을 분류하고 커밋을 백포팅할지 결정합니다.
    • 기본 브랜치의 이전 버전과 호환되는 커밋만 백포팅할 수 있으며 병합 충돌 해결을 위한 사소한 추가 변경사항은 허용됩니다.
  4. 출시 차단 프로그램을 식별하고 출시 브랜치에서 발견된 문제를 해결합니다.
  5. 알려진 모든 출시 차단기가 해결되면 출시 브랜치에서 새 출시 후보를 만듭니다.
    • 출시 후보는 bazel-discuss에 발표되며 Bazel팀은 후보의 커뮤니티 버그 신고를 모니터링합니다.
    • 새로운 출시 차단기가 식별되면 모든 문제를 해결한 후 마지막 단계로 돌아가서 새 출시 후보를 만듭니다.
    • 첫 번째 출시 후보가 생성된 후에는 출시 브랜치에 새 기능을 추가할 수 없습니다.
  6. 더 이상 출시 차단기가 발견되지 않으면 출시 후보를 공식 출시로 푸시합니다.
    • 패치 출시의 경우 최종 출시 후보가 출시된 후 영업일 기준 최소 2일 후에 출시 버전을 푸시합니다.
    • 주 및 부 출시의 경우 최종 출시 후보가 발표되고 영업일 기준 2일이 지난 후 출시를 푸시하되, 첫 번째 출시 후보가 발표된 후 1주일보다 일찍 출시하지 않도록 합니다.
    • 출시는 다음 날이 영업일인 경우에만 푸시됩니다.
    • 이 출시 버전은 bazel-discuss에 발표되며 Bazel팀은 새 출시 버전의 커뮤니티 버그 신고를 모니터링하고 해결합니다.

회귀 보고

사용자가 새로운 Bazel 출시 버전, 출시 후보 또는 Bazel의 HEAD에서 회귀를 발견하면 GitHub에서 버그를 신고하세요. Bazelisk를 사용하여 원인 커밋을 양분하고 이 정보를 버그 신고에 포함할 수 있습니다.

예를 들어 Bazel 6.1.0에서 빌드가 성공했지만 두 번째 출시 후보인 6.2.0으로 실패하는 경우 다음을 통해 bisect를 실행할 수 있습니다.

bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar

문제를 재현해야 하는 경우 상응하는 bazel 명령어를 실행하도록 BAZELISK_SHUTDOWN 또는 BAZELISK_CLEAN 환경 변수를 설정하여 빌드 상태를 재설정할 수 있습니다. 자세한 내용은 Bazelisk bisect 기능에 관한 문서를 참고하세요.

bisect 기능을 사용하려면 Bazelisk를 최신 버전으로 업그레이드해야 합니다.

규칙 호환성

규칙 작성자가 다른 Bazel 버전과의 호환성을 유지하려면 규칙 호환성 페이지를 확인하세요.