Introdução ao Bazel

O Bazel é uma ferramenta de teste e compilação de código aberto semelhante ao Make, Maven e Gradle. Ele usa uma linguagem de build legível e de alto nível. O Bazel é compatível com projetos em várias linguagens e cria saídas para diversas plataformas. O Bazel é compatível com grandes bases de código em vários repositórios e um grande número de usuários.

Vantagens

O Bazel oferece as seguintes vantagens:

  • Linguagem de compilação de alto nível. O Bazel usa uma linguagem abstrata e legível para descrever as propriedades de compilação do seu projeto em um alto nível semântico. Ao contrário de outras ferramentas, o Bazel opera os conceitos de bibliotecas, binários, scripts e conjuntos de dados, protegendo você da complexidade de escrever chamadas individuais para ferramentas como compiladores e vinculadores.

  • O Bazel é rápido e confiável. O Bazel armazena em cache todo o trabalho feito anteriormente e rastreia alterações no conteúdo do arquivo e nos comandos de versão. Dessa forma, o Bazel saberá quando algo precisar ser recriado e recriará apenas isso. Para acelerar ainda mais os builds, configure o projeto para criá-lo de maneira altamente paralela e incremental.

  • O Bazel é multiplataforma. O Bazel é executado no Linux, macOS e Windows. O Bazel pode criar binários e pacotes implantáveis para várias plataformas, incluindo computadores, servidores e dispositivos móveis, no mesmo projeto.

  • Bazel é escalonado. O Bazel mantém agilidade ao processar builds com mais de 100 mil arquivos de origem. Ele funciona com vários repositórios e bases de usuários em milhares.

  • O Bazel é extensível. Muitas linguagens são compatíveis e é possível estender o Bazel para compatibilidade com qualquer outra linguagem ou framework.

Como usar o Bazel

Para criar ou testar um projeto com o Bazel, faça o seguinte:

  1. Configure o Bazel. Faça o download e instale o Bazel.

  2. Configure um espaço de trabalho do projeto, que é um diretório em que o Bazel procura entradas de build e arquivos BUILD e armazena saídas de build.

  3. Escreva um arquivo BUILD, que diz ao Bazel o que compilar e como criá-lo.

    Você grava seu arquivo BUILD declarando destinos de compilação usando Starlark, uma linguagem específica do domínio. Veja o exemplo aqui.

    Um destino de versão especifica um conjunto de artefatos de entrada que o Bazel criará e as respectivas dependências, a regra de compilação que o Bazel usará para criá-lo e as opções que configuram a regra de versão.

    Uma regra de compilação especifica as ferramentas de compilação que o Bazel vai usar, como compiladores e vinculadores, e suas configurações. O Bazel é enviado com várias regras de compilação que abrangem os tipos de artefato mais comuns nas linguagens suportadas em plataformas compatíveis.

  4. Execute o Bazel na linha de comando. O Bazel coloca suas saídas no espaço de trabalho.

Além de criar, também é possível usar o Bazel para executar testes e consultar o build para rastrear dependências no código.

Processo de compilação do Bazel

Ao executar uma versão ou um teste, o Bazel faz o seguinte:

  1. Carrega os arquivos BUILD relevantes para o destino.

  2. analisa as entradas e as dependências delas, aplica as regras de build especificadas e produz um gráfico de ação;

  3. Executa as ações de compilação nas entradas até que as saídas da compilação final sejam produzidas.

Como todo o trabalho de compilação anterior é armazenado em cache, o Bazel pode identificar e reutilizar artefatos em cache e somente reconstruir ou testar novamente o que mudou. Para aplicar ainda mais a correção, é possível configurar o Bazel para executar versões e testes heroticamente pelo sandbox, minimizando o desvio e maximizando a reprodutibilidade.

Gráfico de ação

O gráfico de ações representa os artefatos de versão, as relações entre eles e as ações de versão que o Bazel vai executar. Graças a esse gráfico, o Bazel pode rastrear alterações no conteúdo do arquivo, bem como alterações em ações, como comandos de versão ou teste, e saber qual trabalho de compilação foi feito anteriormente. O gráfico também permite rastrear dependências facilmente no código.

Tutoriais para começar

Para começar a usar o Bazel, consulte Primeiros passos ou acesse diretamente os tutoriais do Bazel: