Como anunciado na postagem original do blog, o Bazel 4.0 e as versões mais recentes oferecem suporte a duas faixas de lançamento: lançamentos graduais e de suporte de longo prazo (LTS). Esta página aborda as informações mais recentes sobre o modelo de lançamento do Bazel.
Controle de versão de lançamento
O Bazel usa um esquema de controle de versões semântico major.minor.patch.
- Uma versão principal contém recursos que não são compatíveis com versões anteriores da versão anterior. Cada versão principal do Bazel é uma versão LTS.
- Uma versão secundária contém correções de bugs compatíveis com versões anteriores e recursos portados do ramo principal.
- Uma versão de patch contém correções de bugs críticos.
Além disso, as versões de pré-lançamento são indicadas com um hífen e um sufixo de data no próximo número da versão principal.
Por exemplo, uma nova versão de cada tipo resultaria nestes números de versão:
- Principal: 6.0.0
- Menor: 6.1.0
- Patch: 6.1.2
- Pré-lançamento: 7.0.0-pre.20230502.1
Estágios de suporte
Para cada versão principal do Bazel, há quatro estágios de suporte:
- Contínua: esta versão principal ainda está em pré-lançamento, e a equipe do Bazel publica versões graduais a partir da função HEAD.
- Ativo: essa versão principal é a versão LTS ativa atual. A equipe do Bazel oferece suporte a recursos importantes e correções de bugs nas versões secundárias.
- Manutenção: esta versão principal é uma versão LTS antiga no modo de manutenção. A equipe do Bazel apenas promete fazer backport de correções de bugs críticos para problemas de segurança e de compatibilidade do SO nesta versão do LTS.
- Descontinuado: a equipe do Bazel não oferece mais suporte a essa versão principal. Todos os usuários precisam migrar para versões mais recentes do Bazel LTS.
Cadência de lançamento
O Bazel publica versões regularmente para duas faixas de lançamento.
Lançamentos contínuos
- Os lançamentos contínuos são coordenados com o lançamento do Google Blaze e são liberados do HEAD a cada duas semanas. É uma prévia da próxima versão do Bazel LTS.
- As versões contínuas podem enviar mudanças incompatíveis. As flags incompatíveis são recomendadas para mudanças importantes, e o lançamento de mudanças incompatíveis deve seguir nossa política de compatibilidade reversa.
Versões LTS
- Lançamento principal: espera-se que um novo lançamento LTS seja cortado do HEAD aproximadamente a cada 12 meses. Quando uma nova versão LTS é lançada, ela entra imediatamente no estágio ativo, e a versão LTS anterior entra no estágio de manutenção.
- Versão secundária: espera-se que novas versões secundárias na faixa de LTS ativo sejam lançadas uma vez a cada dois meses.
- Versão do patch: novas versões de patch para versões LTS nos estágios "Ativo" e "Manutenção" devem ser lançadas sob demanda para correções de bugs críticos.
- Uma versão LTS do Bazel entra no estágio de descontinuação depois de ficar no estágio de manutenção por dois anos.
Para lançamentos programados, consulte nossos problemas de lançamento no GitHub.
Matriz de suporte
Versão LTS | Estágio de suporte | Versão mais recente | Fim do suporte |
---|---|---|---|
Bazel 7 | Contínuo | Conferir a página de lançamentos do GitHub | N/A |
Bazel 6 | Ativo | 6.4.0 | Dezembro de 2025 |
Bazel 5 | Manutenção | 5.4.1 | Janeiro de 2025 |
Bazel 4 | Manutenção | 4.2.4 | Janeiro de 2024 |
Todas as versões do Bazel podem ser encontradas na página de lançamentos do GitHub.
Políticas e procedimentos de lançamento
Para lançamentos contínuos, o processo é simples: a cada duas semanas, uma nova versão é criada, alinhada com a mesma linha de base do lançamento Blaze interno do Google. Devido ao cronograma de lançamento rápido, não fazemos backport de nenhuma mudança para lançamentos contínuos.
Para versões LTS, siga o procedimento e as políticas abaixo:
- Determine uma confirmação de valor de referência para a versão.
- Para uma nova versão LTS principal, a confirmação de referência é a cabeça do branch principal.
- Para uma versão secundária ou de patch, a confirmação de referência é o HEAD da versão mais recente atual da mesma versão LTS.
- Crie uma ramificação de lançamento com o nome
release-<version>
a partir do commit de referencia. - Faça a retrocompatibilidade de mudanças por meio de PRs na ramificação de lançamento.
- A comunidade pode sugerir que determinadas confirmações sejam enviadas de volta respondendo
"
@bazel-io flag
" em problemas ou PRs relevantes do GitHub para marcá-las como possíveis bloqueadores de lançamento. A equipe do Bazel faz a triagem e decide se vai enviar as confirmações de volta. - Somente as confirmações compatíveis com versões anteriores na ramificação principal podem serportadas de volta. Outras mudanças menores para resolver conflitos de mesclagem são aceitáveis.
- A comunidade pode sugerir que determinadas confirmações sejam enviadas de volta respondendo
"
- Identifique os bloqueadores de versões e corrija os problemas encontrados na ramificação de versões.
- A ramificação de lançamento é testada com o mesmo pacote de testes no postsubmit e pipeline de teste downstream no CI do Bazel. A equipe do Bazel monitora os resultados dos testes da versão e corrige todas as regressões encontradas.
- Crie um novo candidato à versão na ramificação de versão quando todos os bloqueadores
de versão conhecidos forem resolvidos.
- O candidato à versão é anunciado no bazel-discuss, e a equipe do Bazel monitora os relatórios de bugs da comunidade para o candidato.
- Se novos bloqueadores de lançamento forem identificados, volte à última etapa e crie um novo candidato à versão depois de resolver todos os problemas.
- Não é permitido adicionar novos recursos à ramificação de lançamento depois que a primeira versão candidata é criada.
- Enviar a versão candidata como a versão oficial se nenhum outro bloqueador de
lançamento for encontrado
- Para versões de patch, envie a versão pelo menos dois dias úteis após o lançamento do último candidato a lançamento.
- Para lançamentos principais e secundários, envie a versão dois dias úteis após o lançamento do último candidato, mas não antes de uma semana após o lançamento do primeiro candidato.
- A versão só é enviada em um dia em que o dia seguinte é útil.
- A versão será anunciada no bazel-discuss (link em inglês). A equipe do Bazel monitora e aborda os relatórios de bugs da comunidade da nova versão.
Informar regressões
Se um usuário encontrar uma regressão em uma nova versão do Bazel, candidato a versão ou até mesmo o Bazel no HEAD, registre um bug no GitHub. Você pode usar o Bazelisk para dividir a confirmação do culpado e incluir essas informações no relatório do bug.
Por exemplo, se a build for bem-sucedida com o Bazel 6.1.0, mas falhar com a segunda versão candidata a lançamento, a 6.2.0, será possível fazer a bissecção por meio de
bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar
É possível definir a variável de ambiente BAZELISK_SHUTDOWN
ou BAZELISK_CLEAN
para executar
comandos Bazel correspondentes e redefinir o estado do build, se necessário, para
reproduzir o problema. Para mais detalhes, consulte a documentação sobre o
recurso de bisset do Bazelisk.
Faça upgrade do Bazelisk para a versão mais recente para usar o recurso de bisect.
Compatibilidade de regras
Se você é um autor de regras e quer manter a compatibilidade com diferentes versões do Bazel, confira a página Compatibilidade de regras.