Este é um guia para os mantenedores do projeto de código aberto Bazel.
Se você quiser contribuir com o Bazel, leia Como contribuir com o Bazel.
Os objetivos desta página são:
- Servir como fonte da verdade para os mantenedores no processo de contribuição do projeto.
- Defina expectativas entre os colaboradores da comunidade e os mantenedores do projeto.
O grupo principal de colaboradores do Bazel tem subequipes dedicadas para gerenciar aspectos do projeto de código aberto. São eles:
- Processo de lançamento: gerencie o processo de lançamento do Bazel.
- Equipe verde: desenvolva um ecossistema saudável de regras e ferramentas.
- Jardineiros da experiência do desenvolvedor: incentivam contribuições externas, analisam problemas e solicitações de pull e tornam nosso fluxo de trabalho de desenvolvimento mais aberto.
Lançamentos
Integração contínua
Leia o guia da equipe Green sobre a infraestrutura de CI do Bazel no repositório bazelbuild/continuous-integration.
Ciclo de vida de um problema
- Um usuário cria um problema escolhendo um dos modelos de problema, que entra no pool de problemas abertos não analisados.
- Um membro da rotação da subequipe de experiência do desenvolvedor (DevEx) analisa o problema.
- Se o problema não for um bug ou uma solicitação de recurso, o membro da DevEx geralmente vai fechar o problema e redirecionar o usuário para StackOverflow e bazel-discuss para aumentar a visibilidade da pergunta.
- Se o problema pertencer a um dos repositórios de regras da comunidade, como rules_apple, o membro da DevEx vai transferir o problema para o repositório correto.
- Se o problema for vago ou estiver incompleto, o membro da DevEx vai atribuir o problema de volta ao usuário para pedir mais informações antes de continuar. Isso geralmente acontece quando o usuário não escolhe o modelo de problema {: .external} correto ou fornece informações incompletas.
- Depois de analisar o problema, o membro da DevEx decide se ele precisa de atenção imediata. Se for o caso, eles vão atribuir o rótulo de P0 e um proprietário da lista de líderes de equipe.
- O membro da DevEx atribui o rótulo
untriaged
e exatamente um rótulo da equipe para o encaminhamento. - O membro da DevEx também atribui exatamente um marcador
type:
, comotype: bug
outype: feature request
, de acordo com o tipo do problema. - Para problemas específicos da plataforma, o membro da DevEx atribui um rótulo
platform:
, comoplatform:apple
para problemas específicos do Mac. - Se o problema for de baixa prioridade e puder ser resolvido por um novo colaborador da comunidade, o membro da DevEx vai atribuir o rótulo
good first issue
. Nessa etapa, o problema entra no pool de problemas abertos sem triagem.
Cada subequipe do Bazel vai triar todos os problemas nos rótulos que possui, de preferência semanalmente. A subequipe vai analisar e avaliar o problema e fornecer uma solução, se possível. Se você for proprietário de um rótulo de equipe, consulte esta seção para mais informações.
Quando um problema é resolvido, ele pode ser fechado.
Ciclo de vida de uma solicitação de envio
- Um usuário cria uma solicitação de envio.
- Se você for membro de uma equipe do Bazel e enviar uma solicitação de pull na sua própria área, será responsável por atribuir o rótulo da equipe e encontrar o melhor revisor.
- Caso contrário, durante a triagem diária, um membro da DevEx atribui um rótulo de equipe e o líder técnico (TL) da equipe para encaminhamento.
- O TL pode atribuir a revisão do PR a outra pessoa.
- O revisor atribuído analisa a solicitação de pull e trabalha com o autor até que ela seja aprovada ou descartada.
- Se aprovado, o revisor importa os commits do PR para o sistema interno de controle de versão do Google para mais testes. Como o Bazel é o mesmo sistema de build usado internamente no Google, precisamos testar todos os commits de PR no conjunto de testes interno. Por isso, não fazemos merge de PRs diretamente.
- Se o commit importado passar em todos os testes internos, ele será compactado e exportado de volta para o GitHub.
- Quando o commit é mesclado à ramificação principal, o GitHub fecha automaticamente a solicitação de envio.
Minha equipe tem uma gravadora. O que devo fazer?
As subequipes precisam triar todos os problemas nos rótulos que possuem, de preferência semanalmente.
Problemas
- Filtre a lista de problemas pelo marcador da sua equipe e pelo marcador
untriaged
. - Analise o problema.
- Identifique um nível de prioridade e atribua o rótulo.
- O problema pode já ter sido priorizado pela subequipe de DevEx se for um P0. Reordene se necessário.
- Cada problema precisa ter exatamente um rótulo de prioridade. Se um problema for P0 ou P1, presumimos que ele está sendo trabalhado ativamente.
- Remova o marcador
untriaged
.
Você precisa estar na organização bazelbuild para adicionar ou remover rótulos.
Solicitações de pull
- Filtre a lista de solicitações de envio pelo rótulo da sua equipe.
- Revise as solicitações de envio abertas.
- Opcional: se você foi atribuído à revisão, mas não é a pessoa certa para isso, reatribua o revisor adequado para fazer uma revisão de código.
- Trabalhe com o criador da solicitação de envio para concluir uma revisão de código.
- Aprove o PR.
- Confira se todos os testes foram aprovados.
- Importe o patch para o sistema interno de controle de versão e execute os pré-envios internos.
- Envie o patch interno. Se o patch for enviado e exportado com sucesso, o PR será fechado automaticamente pelo GitHub.
Prioridade
As seguintes definições de prioridade serão usadas pelos mantenedores para triagem de problemas.
- P0: funcionalidade principal quebrada que torna uma versão do Bazel (exceto candidatos a lançamento) inutilizável ou um serviço inativo que afeta muito o desenvolvimento do projeto Bazel. Isso inclui regressões introduzidas em uma nova versão que bloqueia um número significativo de usuários ou uma mudança interruptiva incompatível que não estava em conformidade com a política de mudança interruptiva. Não há uma solução alternativa prática.
- P1: defeito ou recurso crítico que precisa ser abordado na próxima versão ou um problema grave que afeta muitos usuários (incluindo o desenvolvimento do projeto Bazel), mas existe uma solução alternativa prática. Normalmente, não exige ação imediata. Em alta demanda e planejado no roteiro do trimestre atual.
- P2: defeito ou recurso que precisa ser resolvido, mas em que não estamos trabalhando no momento. Problema moderado em uma versão lançada do Bazel que é inconveniente para um usuário e precisa ser resolvido em uma versão futura e/ou existe uma solução alternativa fácil.
- P3: correção ou melhoria desejável de um bug menor com pequeno impacto. Não priorizado em roteiros do Bazel ou em qualquer lançamento iminente. No entanto, as contribuições da comunidade são incentivadas.
- P4: defeito de baixa prioridade ou solicitação de recurso que provavelmente não será fechada. Também pode ser mantido aberto para uma possível repriorização se mais usuários forem afetados.
- ice-box
- Problemas que não temos tempo de resolver nem de aceitar contribuições no momento. Vamos fechar esses problemas para indicar que ninguém está trabalhando neles, mas vamos continuar monitorando a validade deles ao longo do tempo e reabri-los se um número suficiente de pessoas for afetado e se tivermos recursos para lidar com eles. Como sempre, deixe um comentário ou adicione reações a esses problemas, mesmo quando eles estiverem fechados.
Marcadores de equipe
team-Android
: problemas para a equipe do Android- Contato: ahumesky
team-Bazel
: problemas gerais de produto/estratégia do Bazel- Contato: sventiffe
team-CLI
: interface do console- Contato: meisterT
team-Configurability
: problemas para a equipe de capacidade de configuração. Inclui: configuração principal de build e sistema de transição. Não inclui: mudanças em flags novas ou atuais- Contato: gregestren
team-Core
: Skyframe, consulta do bazel, BEP, análise de opções, bazelrc- Contato: haxorz
team-Documentation
: problemas para a equipe de documentação- Contato: philomathing
team-ExternalDeps
: processamento de dependências externas, Bzlmod, repositórios remotos, arquivo WORKSPACE- Contato: meteorcloudy
team-Loading-API
: arquivo BUILD e processamento de macros: rótulos, package(), visibility, glob- Contato: brandjon
team-Local-Exec
: problemas para a equipe de execução (local)- Contato: meisterT
team-OSS
: problemas para a equipe do Bazel OSS: instalação, processo de lançamento, pacote do Bazel, site, infraestrutura de documentos- Contato: meteorcloudy
team-Performance
: problemas para a equipe de desempenho do Bazel- Contato: meisterT
team-Remote-Exec
: problemas para a equipe de execução (remota)- Contato: coeuvre
team-Rules-API
: API para gravar regras/aspectos: provedores, runfiles, ações, artefatos- Contato: comius
team-Rules-CPP
/team-Rules-ObjC
: problemas com regras de C++/Objective-C, incluindo lógica de regra nativa da Apple- Contato: oquenchil
team-Rules-Java
: problemas com regras do Java- Contato: hvadehra
team-Rules-Python
: problemas com as regras nativas do Python.- Contato: rickeylev
team-Rules-Server
: problemas com regras do lado do servidor incluídas no Bazel- Contato: comius
team-Starlark-Integration
: integração do Bazel e do Starlark sem API. Inclui: como o Bazel aciona o interpretador Starlark, Stardoc, injeção de builtins e codificação de caracteres. Não inclui: problemas de linguagem BUILD ou .bzl.- Contato: brandjon
team-Starlark-Interpreter
: problemas do interpretador Starlark (qualquer coisa em java.net.starlark). Problemas de API BUILD e .bzl (que representam a integração do Bazel com o Starlark) vão parateam-Build-Language
.- Contato: brandjon
Para novos problemas, descontinuamos os rótulos category: *
em favor dos rótulos de equipe.
Confira a lista completa de rótulos aqui.