Por que usar o Bazel?

Informar um problema Ver origem

O Bazel é uma ferramenta de build rápida, correta e extensível com testes integrados que oferecem suporte a vários idiomas, repositórios e plataformas em um ecossistema líder do setor.

O Bazel é rápido

O Bazel sabe exatamente de quais arquivos de entrada cada comando de build precisa, evitando trabalhos desnecessários, executando novamente apenas quando o conjunto de arquivos de entrada é alterado entre cada build. Ele executa comandos de compilação com o máximo de paralelismo possível, seja no mesmo computador ou em nós de compilação remota. Se a estrutura de build permitir, ele poderá executar milhares de comandos de build ou teste ao mesmo tempo.

Isso é compatível com várias camadas de armazenamento em cache, na memória, no disco e no farm de build remoto, se disponível. No Google, rotineiramente atingimos taxas de ocorrência em cache acima de 99%.

O Bazel está correto

O Bazel garante que seus binários sejam criados apenas a partir do seu próprio código-fonte. As ações do Bazel são executadas em sandboxes individuais, e ele rastreia todos os arquivos de entrada do build apenas e sempre executa novamente comandos de build quando necessário. Isso mantém seus binários atualizados para que o mesmo código-fonte sempre resulte no mesmo binário, bit a bit.

Diga "goodbyte" para invocações infinitas de make clean e para procurar bugs fantasmas que, na verdade, foram resolvidos no código-fonte que nunca foi criado.

O Bazel é extensível

Aproveite todo o potencial do Bazel criando suas próprias regras e macros para personalizar o Bazel de acordo com suas necessidades específicas em uma ampla variedade de projetos.

As regras do Bazel são escritas no Starlark (em inglês), nossa linguagem de programação interna que é um subconjunto do Python. O Starlark torna a criação de regras acessível para a maioria dos desenvolvedores, além de criar regras que podem ser usadas em todo o ecossistema.

Testes integrados

O executor de testes integrado (link em inglês) do Bazel conhece e executa apenas os testes que precisam ser executados novamente, usando a execução remota (se disponível) para executá-los em paralelo. Detecte flakes com antecedência usando a execução remota para executar rapidamente um teste milhares de vezes.

O Bazel fornece instalações para fazer upload dos resultados do teste para um local central, facilitando a comunicação eficiente dos resultados do teste, seja na CI ou por desenvolvedores individuais.

Compatível com várias linguagens

O Bazel oferece suporte a muitas linguagens de programação comuns, incluindo C++, Java, Kotlin, Python, Go e Rust. É possível criar vários binários (por exemplo, back-end, IU da Web e app para dispositivos móveis) na mesma invocação do Bazel sem se limitar à ferramenta de build idiomática de uma linguagem.

Suporte a vários repositórios

O Bazel pode coletar código-fonte de vários locais.Você não precisa disponibilizar suas dependências, mas é possível. Em vez disso, aponte o Bazel para o local do código-fonte ou artefatos pré-criados (por exemplo, um repositório git ou Maven Central) e ele cuida do resto.

Suporte a várias plataformas

O Bazel pode criar projetos simultaneamente para várias plataformas, incluindo Linux, macOS, Windows e Android. Ele também oferece recursos de compilação cruzada avançados para criar código para uma plataforma enquanto executa o build em outra.

Ecossistema amplo

Os líderes do setor adoram o Bazel, que cria uma grande comunidade de desenvolvedores que usam e contribuem para ele. Encontre ferramentas, serviços e documentação, incluindo ofertas de SaaS e consultoria que o Bazel pode usar. Explore extensões como suporte a linguagens de programação em nossos repositórios de software de código aberto.