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. Novas versões principais LTS podem conter mudanças incompatíveis que exigem algum esforço de migração. Para mais informações sobre o modelo de lançamento do Bazel, consulte a página Modelo de lançamento.
Resumo
- Recomendamos o uso de flags
--incompatible_*para mudanças interruptivas. - Para cada flag
--incompatible_*, um problema do GitHub explica a mudança de comportamento e visa fornecer uma receita de migração. - Recomendamos que as flags incompatíveis sejam portadas para a versão LTS mais recente sem ativar a flag por padrão.
- As APIs e o comportamento protegidos por uma flag
--experimental_*podem mudar a qualquer momento. - Nunca execute builds de produção com
--experimental_*ou--incompatible_*flags.
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 é funcionalidade estável?
Em geral, APIs ou comportamentos sem --experimental_... flags são considerados
recursos estáveis e com suporte 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 visa fornecer uma
receita de migração que ajuda a atualizar seu código (BUILD e .bzl arquivos, bem
como qualquer uso do Bazel em scripts, uso da API do Bazel e assim por diante).
As mudanças incompatíveis precisam ter uma flag --incompatible_* associada e um
problema correspondente do GitHub.
Recomendamos que a flag incompatível e as mudanças relevantes sejam portadas para a versão LTS mais recente sem ativar a flag por padrão. Isso permite que os usuários migrem para as mudanças incompatíveis antes que a próxima versão LTS esteja disponível.
Como comunicar mudanças incompatíveis
A principal fonte de informações sobre mudanças incompatíveis são problemas do GitHub marcados com um "incompatible-change" rótulo.
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 precisará ser marcada com
o migration-ready rótulo. O problema de mudança incompatível será fechado quando a
flag incompatível for invertida no HEAD.