Visão do Bazel

Informar um problema Mostrar fonte Por noite · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Qualquer desenvolvedor de software pode criar, testar e empacotar qualquer projeto, de qualquer tamanho ou complexidade, com ferramentas fáceis de adotar e se estendem.

  • Os engenheiros podem considerar os princípios básicos do build como sempre. Desenvolvedores de software focam no processo criativo de autoria do código, porque a mecânica o processo de criação e teste seja resolvido. Ao personalizar o sistema de build para suporte a novos idiomas ou necessidades organizacionais únicas, os usuários se concentram no aspectos de extensibilidade exclusivos do caso de uso, sem a necessidade para reinventar a estrutura básica.

  • Engenheiros podem contribuir facilmente para qualquer projeto. Um desenvolvedor que quer começar a trabalhar em um novo projeto pode simplesmente clonar o projeto e executar o ser construído. Não é preciso fazer configurações locais, ele simplesmente funciona. Com execução remota entre plataformas, elas podem funcionar em qualquer máquina, em qualquer lugar, e testar totalmente suas alterações em todas as plataformas para as quais o projeto visa. Os engenheiros podem configurar rapidamente o build para um novo projeto ou de forma incremental migrar um build atual.

  • Os projetos podem ser escalonados para qualquer tamanho de base de código e equipe. Rápido, o teste incremental permite que as equipes validem totalmente cada mudança antes que ela seja comprometido. Isso continua sendo válido mesmo à medida que os repositórios crescem e os projetos abrangem vários repositórios e vários idiomas são introduzidos. A infraestrutura não força desenvolvedores a trocar a cobertura de teste pela velocidade do build.

Acreditamos que o Bazel tem o potencial de alcançar essa visão.

O Bazel foi criado do zero para possibilitar builds reproduzíveis (uma um determinado conjunto de entradas sempre produzirá as mesmas saídas) e portátil (um build podem ser executados em qualquer máquina sem afetar o resultado.

Essas características dão suporte à incrementabilidade segura (a reconstrução só mudou entradas não introduz o risco de corrupção) e distributibilidade (base ações são isoladas e podem ser descarregadas). Minimizando o trabalho necessário um build correto e paralelizando esse trabalho em vários núcleos e o Bazel pode agilizar qualquer build.

Camada de abstração do Bazel: instruções específicas para linguagens, plataformas e de ferramentas implementados em uma linguagem simples de extensibilidade — permite que ele seja pode ser facilmente aplicado a qualquer contexto.

Competências principais do Bazel

  1. O Bazel oferece suporte a builds e testes em várias linguagens e plataformas. Você pode executar um único comando para criar e testar toda a árvore de origem, não importa a combinação de idiomas e plataformas que você quer segmentar.
  2. As builds do Bazel são rápidas e corretas. Cada build e teste é incremental, em relação às necessidades e em CI.
  3. O Bazel fornece uma linguagem uniforme e extensível para definir builds para qualquer linguagem ou plataforma do usuário.
  4. O Bazel permite que suas compilações sejam escalonadas conectando-se à execução remota e e serviços de armazenamento em cache.
  5. O Bazel funciona em todas as principais plataformas de desenvolvimento (Linux, MacOS e Windows).
  6. Aceitamos que adotar o Bazel exige esforço, mas a adoção gradual é sempre que possível. Interfaces do Bazel com ferramentas padrão na prática para um determinado idioma/plataforma.

Atendimento a comunidades linguísticas

A engenharia de software evolui no contexto das comunidades linguísticas — normalmente, grupos auto-organizados de pessoas que usam ferramentas e práticas comuns.

Para serem usadas pelos membros de uma comunidade linguística, as regras do Bazel de alta qualidade precisam ser disponíveis que se integram aos fluxos de trabalho e convenções dessa comunidade.

O Bazel está comprometido em ser extensível e aberto e oferecer suporte a bons conjuntos de regras para em qualquer idioma.

Requisitos de um bom conjunto de regras

  1. As regras precisam oferecer suporte à criação e teste eficientes do incluindo a cobertura de código.
  2. As regras precisam interagir com um "gerenciador de pacotes" amplamente utilizado para linguagem de programação (como Maven para Java) e suporte a caminhos de migração incremental de outros sistemas de build muito usados.
  3. As regras precisam ser extensíveis e interoperáveis, seguindo "Sanduíche de bazel" princípios da segurança.
  4. As regras precisam estar prontas para execução remota. Na prática, isso significa configurável usando o mecanismo de conjuntos de ferramentas.
  5. As regras (e o Bazel) precisam interagir com um ambiente de desenvolvimento integrado amplamente utilizado para idioma, se houver.
  6. As regras precisam ter uma documentação completa e utilizável com instruções material para novos usuários, documentos abrangentes para usuários experientes.

Cada um desses itens é essencial e, juntos, eles fazem entregas competências para esse ecossistema específico.

Em geral, elas também são suficientes. Quando todas forem atendidas, o Bazel agrega valor aos membros dessa comunidade linguística.