출시 모델

문제 신고 소스 보기 매일

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

지원 매트릭스

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

모든 Bazel LTS 출시는 GitHub의 출시 페이지에서 찾을 수 있습니다.

출시 버전 관리

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의 출시 문제를 확인하세요.

출시 절차 및 정책

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

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

  1. 출시 버전의 기준 커밋을 결정합니다.
    • 새로운 주 LTS 출시의 경우 기준 커밋은 기본 브랜치의 HEAD입니다.
    • 부 버전 또는 패치 출시의 경우 기준 커밋은 동일한 LTS 출시의 현재 최신 버전의 HEAD입니다.
  2. 기준 커밋에서 release-<version>이라는 이름으로 출시 브랜치를 만듭니다.
  3. PR을 통해 변경사항을 출시 브랜치로 백포팅합니다.
    • 커뮤니티는 관련 GitHub 문제 또는 PR에서 '@bazel-io flag'로 회신하여 특정 커밋을 백포팅할 것을 제안할 수 있습니다. 그러면 Bazel팀에서 해당 커밋을 분류하고 커밋을 백포팅할지 결정합니다.
    • 기본 브랜치의 이전 버전과 호환되는 커밋만 백포팅할 수 있으며 병합 충돌 해결을 위한 사소한 추가 변경사항은 허용됩니다.
  4. Bazel 유지관리자를 위해 Cherry-Pick 요청 문제를 사용하여 변경사항을 백포팅합니다.

    • Bazel 유지관리자는 출시 브랜치에 대한 특정 커밋을 선별하도록 요청할 수 있습니다. 이 프로세스는 GitHub에서 선택 요청을 생성하는 것으로 시작됩니다. 방법은 여기를 참조하세요.

      1. 선택 요청 열기
      2. 요청 세부정보를 입력합니다.
        • 제목: 간결하고 구체적인 요청 제목을 제공합니다.
        • 커밋 ID: 선별할 커밋의 ID를 입력합니다. 커밋이 여러 개 있으면 쉼표로 구분합니다.
        • 카테고리: 요청의 카테고리를 지정합니다.
        • 검토자: 검토자가 여러 명인 경우 GitHub ID를 쉼표로 구분합니다.
      3. 마일스톤을 설정합니다.
        • '주요 일정' 섹션을 찾아 설정을 클릭합니다.
        • 적절한 X.Y.Z 출시 차단 프로그램을 선택합니다. 이 작업은 선택 봇을 트리거하여 'release-X.Y.Z' 브랜치 요청을 처리합니다.
      4. 문제를 제출합니다.
        • 모든 세부정보를 작성하고 주요 기록이 설정되었으면 문제를 제출합니다.
    • 선택 봇이 요청을 처리하고 커밋이 선별 대상이 될 수 있는지 알립니다. 커밋이 선택 가능한 경우, 즉 커밋을 선별하는 동안 병합 충돌이 발생하지 않으면 봇이 새 pull 요청을 만듭니다. Bazel팀 구성원이 pull 요청을 승인하면 커밋이 선별되어 출시 브랜치에 병합됩니다. 완료된 선택 요청의 시각적 예는 이 예시를 참조하세요.

  5. 출시 차단 프로그램을 식별하고 출시 브랜치에서 발견된 문제를 해결합니다.

  6. 알려진 모든 출시 차단기가 해결되면 출시 브랜치에서 새 출시 후보를 만듭니다.

    • 출시 후보는 bazel-discuss에 발표되며 Bazel팀은 후보의 커뮤니티 버그 신고를 모니터링합니다.
    • 새로운 출시 차단기가 식별되면 모든 문제를 해결한 후 마지막 단계로 돌아가서 새 출시 후보를 만듭니다.
    • 첫 번째 출시 후보가 생성된 후에는 출시 브랜치에 새로운 기능을 추가할 수 없습니다. 선별은 중요한 수정사항으로만 제한됩니다. 선택이 필요한 경우 요청자는 다음 질문에 답해야 합니다. 이 변경사항이 중요한 이유는 무엇이며 이점은 무엇인가요? 이 변경으로 인해 회귀가 발생할 가능성은 얼마나 되나요?
  7. 더 이상 출시 차단기가 발견되지 않으면 출시 후보를 공식 출시로 푸시합니다.

    • 패치 출시의 경우 최종 출시 후보가 출시된 후 영업일 기준 최소 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 버전과의 호환성을 유지하려면 규칙 호환성 페이지를 확인하세요.