Esta página fornece informações sobre como lidar com a compatibilidade com versões anteriores, incluindo a migração de uma versão para outra e como comunicar mudanças incompatíveis.
O Bazel está evoluindo. As versões secundárias lançadas como parte de uma versão principal LTS são totalmente compatíveis com versões anteriores. As mudanças entre as principais versões LTS podem conter alterações incompatíveis que exigem algum esforço de migração. Para mais informações sobre como funciona a cadência de lançamento do Bazel, consulte Anúncio das versões de suporte de longo prazo (LTS) do Bazel.
Resumo
- Recomendamos usar flags
--incompatible_*
para mudanças incompatíveis. - Para cada flag
--incompatible_*
, um problema no GitHub explica a mudança no comportamento e visa fornecer uma receita de migração. - As APIs e o comportamento protegidos por uma flag
--experimental_*
podem mudar a qualquer momento. - Nunca execute builds de produção com as flags
--experimental_*
ou--incompatible_*
.
Como seguir esta política
- Para usuários do Bazel: como atualizar o Bazel
- Para colaboradores: práticas recomendadas para mudanças incompatíveis
- Para gerentes de lançamento: como atualizar rótulos de problemas e lançamentos
O que é uma funcionalidade estável?
Em geral, as APIs ou comportamentos sem flags --experimental_...
são considerados recursos estáveis e compatíveis no Bazel.
Isso inclui:
- Linguagem e APIs do Starlark
- Regras agrupadas com o Bazel
- APIs do Bazel, como APIs de execução remota ou protocolo de eventos de build
- Flags e semântica
Mudanças incompatíveis e receitas de migração
Para cada mudança incompatível em uma nova versão, a equipe do Bazel tenta fornecer uma receita de migração que ajuda a atualizar seu código (arquivos BUILD
e .bzl
, além de qualquer uso do Bazel em scripts, uso da API do Bazel etc.).
As mudanças incompatíveis precisam ter uma flag --incompatible_*
associada e um problema correspondente no GitHub.
Comunicação sobre mudanças incompatíveis
A principal fonte de informações sobre mudanças incompatíveis são os problemas do GitHub marcados com um rótulo "incompatible-change".
Para cada mudança incompatível, o problema especifica o seguinte:
- Nome da flag que controla a mudança incompatível
- Descrição da funcionalidade alterada
- Receita de migração
Quando uma mudança incompatível estiver pronta para migração com o Bazel no HEAD (e, portanto, também com a próxima versão contínua do Bazel), ela deverá ser marcada com o rótulo migration-ready
. O problema de mudança incompatível é fechado quando a flag incompatível é invertida no HEAD.