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 em um ecossistema líder do setor.
O Bazel é rápido
O Bazel sabe exatamente quais arquivos de entrada cada comando de build precisa, evitando trabalho desnecessário ao executar novamente apenas quando o conjunto de arquivos de entrada muda entre cada build. Ele executa comandos de build com o máximo de paralelismo possível, seja no mesmo computador ou em nós de build remotos. 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 cache, na memória, no disco e na farm de build remota, se disponível. No Google, normalmente alcançamos taxas de acerto de cache acima de 99%.
O Bazel está correto
O Bazel garante que os binários sejam criados apenas com seu próprio código-fonte. As ações do Bazel são executadas em sandboxes individuais, e o Bazel rastreia todos os arquivos de entrada do build, executando novamente os comandos de build somente 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 adeus às invocações infinitas de make clean
e à busca por bugs fantasmas
que, na verdade, foram resolvidos em um código-fonte que nunca foi criado.
O Bazel é extensível
Aproveite todo o poder do Bazel escrevendo 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 em Starlark, nossa linguagem de programação interna que é um subconjunto do Python. O Starlark torna a escrita 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 falhas no início usando a execução remota para executar um teste milhares de vezes rapidamente.
O Bazel oferece recursos para fazer upload dos resultados dos testes em um local central, facilitando a comunicação eficiente dos resultados, seja na CI ou por desenvolvedores individuais.
Suporte para vários idiomas.
O Bazel é compatível com 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 ficar restrito a uma ferramenta de build idiomática de uma linguagem.
Suporte a vários repositórios
O Bazel pode reunir código-fonte de vários locais: não é necessário vender suas dependências (mas você pode). Em vez disso, aponte o Bazel para o local do código-fonte ou dos artefatos pré-criados (por exemplo, um repositório git ou o Maven Central), e ele cuida do resto.
Suporte multiplataforma
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 para criar código para uma plataforma enquanto executa o build em outra.
Ecossistema amplo
Líderes do setor adoram o Bazel, criando uma grande comunidade de desenvolvedores que usam e contribuem com o Bazel. Encontre ferramentas, serviços e documentação, incluindo ofertas de consultoria e SaaS que o Bazel pode usar. Conheça extensões como suporte a linguagens de programação nos repositórios de software de código aberto.