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, ela poderá executar milhares de comandos de build ou teste ao mesmo tempo.
Isso tem suporte de 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 a caça a 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 no 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.