Por que usar o Bazel?

Informar um problema Ver a fonte Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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, sendo executado novamente apenas quando o conjunto de arquivos de entrada é alterado 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 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, alcançamos regularmente taxas de acerto de cache acima de 99%.

O Bazel está correto

O Bazel garante que os binários sejam criados somente a partir do 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 apenas e sempre os 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 por bit.

Diga adeus a invocações make clean infinitas e à busca de bugs fantasmas que foram resolvidos no 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 criação de regras acessível para a maioria dos desenvolvedores, além de criar regras que podem ser usadas em todo o ecossistema.

Teste integrado

O executador 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 com antecedência usando a execução remota para executar um teste milhares de vezes.

O Bazel oferece recursos para fazer upload dos resultados de teste para um local central, facilitando a comunicação eficiente dos resultados de 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, interface da Web e app para dispositivos móveis) na mesma invocação do Bazel sem ser restringido à ferramenta de build idiomática de um idioma.

Suporte a vários repositórios

O Bazel pode coletar código-fonte de vários locais: você não precisa vender suas dependências (mas pode!), em vez disso, pode apontar 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 restante.

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 poderosos de compilação cruzada para criar código para uma plataforma enquanto executa o build em outra.

Ecossistema amplo

Os líderes do setor adoram o Bazel e criam uma grande comunidade de desenvolvedores que usam e contribuem para 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.