Introdução ao Bazel

<ph-0-0>

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

Vantagens

O Bazel oferece as seguintes vantagens:

  • Linguagem de build de alto nível. Ele usa uma linguagem abstrata e legível por humanos para descrever as propriedades de build do projeto em um alto nível semântico. Ao contrário de outras ferramentas, ele opera com conceitos de bibliotecas, binários, scripts e conjuntos de dados. Isso protege você da complexidade de escrever chamadas individuais para ferramentas como compiladores e vinculadores.

  • O Bazel é rápido e confiável. Ele armazena em cache todo o trabalho feito anteriormente e rastreia as mudanças no conteúdo do arquivo e nos comandos de build. Dessa forma, ele sabe quando algo precisa ser recriado e recria apenas isso. Para acelerar ainda mais os builds, é possível configurar o projeto para criar de maneira altamente paralela e incremental.

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

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

  • O Bazel é extensível. Muitas linguagens são compatíveis, e você pode estender o Bazel para oferecer suporte a qualquer outra linguagem ou framework.

Como usar o Bazel

Para criar ou testar um projeto com o Bazel, normalmente você faz 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 as saídas de build.

  3. Grave um arquivo BUILD, que informa ao Bazel o que criar e como.

    Para escrever o arquivo BUILD, declare destinos de versão usando Starlark, uma linguagem específica de domínio. Veja um exemplo aqui.

    Um destino de build especifica um conjunto de artefatos de entrada que o Bazel vai criar, além das dependências deles, a regra de build que o Bazel vai usar para criá-lo e as opções que configuram essa regra.

    Uma regra de build especifica as ferramentas de build que o Bazel vai usar, como compiladores e vinculadores, além das configurações deles. O Bazel é enviado com várias regras de build que abrangem os tipos de artefatos mais comuns nas linguagens compatíveis nas plataformas com suporte.

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

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

Processo de build 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 build nas entradas até que as saídas de build finais sejam produzidas.

Como todo o trabalho de build anterior é armazenado em cache, o Bazel pode identificar e reutilizar artefatos armazenados em cache e apenas recriar ou testar novamente o que foi alterado. Para garantir ainda mais correção, é possível configurar o Bazel para executar builds e testes hermeticamente pelo sandbox, minimizando o desvio e maximizando a reprodutibilidade.

Gráfico de ações

O gráfico de ações representa os artefatos de compilação, as relações entre eles e as ações de compilaçã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 mudanças em ações, como comandos de build ou teste, e saber qual trabalho de build foi feito anteriormente. O gráfico também permite rastrear as dependências no código com facilidade.

Tutoriais de primeiros passos

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