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.