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 e ele entra no conjunto de problemas abertos não revisados.
- 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 um rótulo. 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 as pré-submissões internas.
- 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.
Marcadores de equipe
team-Android
: problemas para a equipe do Android- Contato: ahumesky
team-Bazel
: problemas gerais de produto/estratégia do Bazel- Contato: meisterT
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çãoteam-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: pzembrod
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.