원본 블로그 게시물에서 발표한 바와 같이 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에서 순차적 출시를 게시합니다.
- Active: 이 주요 버전은 현재 활성 상태인 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 출시 페이지 확인 | N/A |
Bazel 6 | 활성 | 6.3.2 | 2025년 12월 |
Bazel 5 | 유지보수 | 5.4.1세 | 2025년 1월 |
Bazel 4 | 유지보수 | 4.2.4세 | 2024년 1월 |
모든 Bazel 출시는 GitHub의 출시 페이지에서 찾을 수 있습니다.
출시 절차 및 정책
순차적 출시의 경우 프로세스는 간단합니다. 약 2주마다 Google 내부 Blaze 출시와 동일한 기준에 따라 새로운 출시가 생성됩니다. 빠른 출시 일정으로 인해 출시 버전의 변경사항은 백포트되지 않습니다.
LTS 출시의 경우 아래 절차 및 정책을 따르세요.
- 출시의 기준 커밋을 결정합니다.
- 새로운 주 LTS 출시의 경우 기준 커밋은 기본 브랜치의 HEAD입니다.
- 부 또는 패치 출시의 경우 기준 커밋은 동일한 LTS 버전의 최신 최신 버전의 HEAD입니다.
- 기준 커밋에서
release-<version>
이름으로 출시 브랜치를 만듭니다. - PR을 통해 변경사항을 출시 분기로 백포팅합니다.
- 커뮤니티는 관련 GitHub 문제 또는 PR에 '
@bazel-io flag
'라고 회신하여 특정 커밋을 백포팅할 것을 제안할 수 있으며, 이러한 경우 Bazel팀에서 이를 커밋하여 백포트할지 결정합니다. - 기본 브랜치에서 이전 버전과 호환되는 커밋만 백포팅할 수 있으며 병합 충돌을 해결하기 위한 사소한 추가 변경사항도 허용됩니다.
- 커뮤니티는 관련 GitHub 문제 또는 PR에 '
- 출시 차단기를 식별하고 출시 브랜치에서 발견된 문제를 해결합니다.
- 출시 브랜치는 Bazel CI의 postsubmit 및 다운스트림 테스트 파이프라인에서 동일한 테스트 모음으로 테스트되었습니다. Bazel팀은 출시 브랜치의 테스트 결과를 모니터링하고 발견된 모든 회귀를 수정합니다.
- 알려진 모든 출시 차단 도구가 해제되면 출시 브랜치에서 새 출시 후보를 만듭니다.
- 출시 후보는 bazel-discuss에 발표되었으며 Bazel팀은 후보의 커뮤니티 버그 신고를 모니터링합니다.
- 새로운 출시 차단 기능이 식별되면 마지막 단계로 돌아가서 모든 문제를 해결한 후 새 출시 후보를 만듭니다.
- 첫 번째 출시 후보가 생성된 후에는 출시 브랜치에 새 기능을 추가할 수 없습니다.
- 추가 출시 차단자가 없으면 출시 후보를 공식 출시로 푸시합니다.
- 패치 출시의 경우 마지막 출시 후보가 선정되고 영업일 기준 최소 2일 후 출시를 푸시합니다.
- 메이저 및 마이너 출시의 경우 마지막 출시 후보가 나간 후 영업일 기준 2일 후에 출시해야 합니다. 단, 첫 번째 출시 후보가 출시된 날로부터 1주일 이후여야 합니다.
- 출시일은 다음 날이 영업일인 날에만 푸시됩니다.
- 이 출시는 bazel-discuss에 발표되었으며 Bazel팀은 새 출시의 커뮤니티 버그 신고를 모니터링하고 해결합니다.
회귀 보고
사용자가 새로운 Bazel 출시 버전, 출시 후보 또는 HEAD에서 Bazel을 사용한 회귀를 발견했다면 GitHub에서 버그를 신고하세요. Bazelisk를 사용하여 문제의 커밋을 양분하고 이 정보를 버그 신고에 포함할 수 있습니다.
예를 들어 빌드가 Bazel 6.1.0에서는 성공했지만 두 번째 출시 후보인 6.2.0에서는 실패한다면 다음을 통해 양분할 수 있습니다.
bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar
문제를 재현하는 데 필요한 경우 상응하는 bazel 명령어를 실행하여 빌드 상태를 재설정하도록 BAZELISK_SHUTDOWN
또는 BAZELISK_CLEAN
환경 변수를 설정할 수 있습니다. 자세한 내용은 Bazelisk bisect 기능에 대한 문서를 참조하세요.
biist 기능을 사용하려면 Bazelisk를 최신 버전으로 업그레이드해야 합니다.
규칙 호환성
다양한 Bazel 버전과의 호환성을 유지하려는 규칙 작성자는 규칙 호환성 페이지를 참조하세요.