Este é um guia para os mantenedores do projeto de código aberto do Bazel.
Se você quiser contribuir com o Bazel, leia o artigo Contribuir com o Bazel.
Os objetivos desta página são:
- Servir como fonte da verdade dos mantenedores para o processo de contribuição do projeto.
- Definir 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 elas:
- Processo de lançamento: gerenciar o processo de lançamento do Bazel.
- Equipe verde: desenvolver um ecossistema saudável de regras e ferramentas.
- Jardineiros da experiência do desenvolvedor: incentivar contribuições externas, analisar problemas e solicitações de envio e tornar nosso fluxo de trabalho de desenvolvimento mais aberto.
Lançamentos
Integração contínua
Leia o guia da equipe verde para a infraestrutura de CI do Bazel no bazelbuild/continuous-integration repositório.
Ciclo de vida de um problema
- Um usuário cria um problema escolhendo um dos modelos de problemas e ele 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 o StackOverflow e o bazel-discuss para maior visibilidade na pergunta.
- Se o problema pertencer a um dos repositórios de regras pertencentes à comunidade, como rules_apple, o membro da DevEx vai transferir esse problema para o repositório correto.
- Se o problema for vago ou tiver informações ausentes, o membro da DevEx vai atribuir o problema de volta ao usuário para solicitar mais informações antes de continuar. Isso geralmente ocorre 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 o problema exige atenção imediata. Em caso afirmativo, eles vão atribuir o rótulo de prioridade P0 prioridade e um proprietário da lista de líderes de equipe.
- O membro da DevEx atribui o rótulo
untriagede exatamente um rótulo de equipe para o roteamento. - O membro da DevEx também atribui exatamente um rótulo
type:, comotype: bugoutype: feature request, de acordo com o tipo de problema. - Para problemas específicos da plataforma, o membro da DevEx atribui um rótulo
platform:, comoplatform:applepara problemas específicos do Mac. - Se o problema for de baixa prioridade e puder ser trabalhado por um novo colaborador da comunidade, o membro da DevEx vai atribuir o rótulo
good first issue. Nessa fase, o problema entra no pool de problemas abertos não triados.
Cada subequipe do Bazel vai triar todos os problemas nos rótulos que possui, de preferência a semanalmente. A subequipe vai analisar e avaliar o problema e fornecer uma resolução, se possível. Se você é 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 RP para 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, na sigla em inglês) da equipe para o roteamento.
- O TL pode atribuir outra pessoa para revisar a RP.
- O revisor atribuído analisa a RP e trabalha com o autor até que ela seja aprovada ou descartada.
- Se aprovado, o revisor importa as confirmações da RP para o sistema de controle de versão interno do Google para mais testes. Como o Bazel é o mesmo sistema de build usado internamente no Google, precisamos testar todas as confirmações de RP no conjunto de testes internos. É por isso que não mesclamos as RPs diretamente.
- Se a confirmação importada passar em todos os testes internos, ela será compactada e exportada de volta para o GitHub.
- Quando a confirmação é mesclada ao mestre, o GitHub fecha automaticamente a RP.
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 rótulo da equipe e o
untriagedrótulo. - Analise o problema.
- Identifique um nível de prioridade e atribua o rótulo.
- O problema já pode ter sido priorizado pela subequipe da DevEx se for um P0. Re-priorize, 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 rótulo
untriaged.
É necessário estar na organização bazelbuild organization para adicionar ou remover rótulos.
Solicitações de envio
- Filtre a lista de solicitações de envio pelo rótulo da equipe.
- Analise as solicitações de envio abertas.
- Opcional: se você for atribuído à revisão, mas não for a pessoa certa para ela, reatribua o revisor adequado para realizar uma revisão de código.
- Trabalhe com o criador da solicitação de envio para concluir uma revisão de código.
- Aprove a RP.
- Verifique se todos os testes foram aprovados.
- Importe o patch para o sistema de controle de versão interno e execute os pré-envios internos.
- Envie o patch interno. Se o patch for enviado e exportado com sucesso, a RP será fechada automaticamente pelo GitHub.
Prioridade
As definições de prioridade a seguir serão usadas pelos mantenedores para triar problemas.
- P0 : funcionalidade principal quebrada que faz com que uma versão do Bazel (menos candidatos a lançamento) fique inutilizável ou um serviço inativo que afeta gravemente o desenvolvimento do projeto do Bazel. Isso inclui regressões introduzidas em uma nova versão que bloqueia um número significativo de usuários ou uma mudança incompatível que não estava em conformidade com a política de mudanças interruptivas. Não há 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 do 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 abordado, mas não estamos trabalhando nele no momento. Problema moderado em uma versão lançada do Bazel que é inconveniente para um usuário e precisa ser abordado em uma versão futura e/ou uma solução alternativa fácil.
- P3 : correção de bug menor desejável ou melhoria com pequeno impacto. Não priorizado em roteiros do Bazel ou em qualquer lançamento iminente, mas as contribuições da comunidade são incentivadas.
- P4 : defeito de baixa prioridade ou solicitação de recurso que provavelmente não será fechado. 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 para lidar nem para o tempo para aceitar contribuições. Vamos fechar esses problemas para indicar que ninguém está trabalhando neles, mas vamos continuar monitorando a validade deles ao longo do tempo e revivê-los se um número suficiente de pessoas for afetado e se tivermos recursos para lidar com eles. Como sempre, fique à vontade para comentar ou adicionar reações a esses problemas, mesmo quando fechados.
Rótulos de equipe
team-Android: problemas da 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 da equipe de configurabilidade. Inclui: configuração de build principal 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 da equipe de documentação- Contato: philomathing
team-ExternalDeps: tratamento de dependências externas, Bzlmod, repositórios remotos, arquivo WORKSPACE- Contato: meteorcloudy
team-Loading-API: arquivo BUILD e processamento de macros: rótulos, package(), visibilidade, glob- Contato: brandjon
team-Local-Exec: problemas da equipe de execução (local)- Contato: meisterT
team-OSS: problemas da equipe do Bazel OSS: instalação, processo de lançamento, pacote do Bazel, site, infraestrutura de documentos- Contato: meteorcloudy
team-Performance: problemas da equipe de desempenho do Bazel- Contato: meisterT
team-Remote-Exec: problemas da equipe de execução (remota)- Contato: coeuvre
team-Rules-API: API para escrever regras/aspectos: provedores, runfiles, ações, artefatos- Contato: comius
team-Rules-CPP/team-Rules-ObjC: problemas para regras C++/Objective-C, incluindo lógica de regra nativa da Apple- Contato: oquenchil
team-Rules-Java: problemas para regras Java- Contato: hvadehra
team-Rules-Python: problemas para as regras nativas do Python- Contato: rickeylev
team-Rules-Server: problemas para regras do lado do servidor incluídas no Bazel- Contato: comius
team-Starlark-Integration: integração não API do Bazel + Starlark. Inclui: como o Bazel aciona o interpretador Starlark, Stardoc, injeção de builtins, codificação de caracteres. Não inclui: problemas de linguagem BUILD ou .bzl.- Contato: brandjon
team-Starlark-Interpreter: problemas para o 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.
Consulte a lista completa de rótulos aqui.