Por que usar o Bazel?

<ph-0-0>

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

O Bazel é rápido

Ele sabe exatamente de quais arquivos de entrada cada comando de compilação precisa. Assim, ele evita trabalhos desnecessários ao executar 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 do 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 versões remotas, se disponível. No Google, atingimos taxas de ocorrência em cache com frequência ao norte de 99%.

O Bazel está correto

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

Diga o Goodbyte a invocações make clean infinitas e a busca de bugs fantasmas que foram de fato resolvidos no código-fonte que nunca foram criados.

O Bazel é extensível.

Aproveite toda a capacidade do Bazel escrevendo suas próprias regras e macros para personalizar a ferramenta de acordo com suas necessidades específicas em uma grande variedade de projetos.

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

Teste integrado

O executor de testes integrado 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 antecipadamente usando execução remota para executar um teste rapidamente milhares de vezes.

Ele fornece recursos (link em inglês) para fazer upload dos resultados de testes em um local central, facilitando a comunicação eficiente dos resultados, seja em CI ou por desenvolvedores individuais.

Compatível com várias linguagens

Ele 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, interface da Web e app para dispositivos móveis) na mesma invocação do Bazel sem se restaurar a uma 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, ele pode apontar 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

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

Amplo ecossistema

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