Uma lista de recursos comuns ao contribuir para o Kubernetes, dicas, truques e melhores melhores práticas comumente usadas no projeto Kubernetes. É um resumo ou referência rápida de informações úteis para tornar a sua experiência de contribuição do GitHub Melhor.
Índice
- Guia do Contribuidor - Guia sobre como começar a contribuir para o projeto Kubernetes.
- Guia do Desenvolvedor - Guia para contribuir com código diretamente para o projeto Kubernetes.
- Informações de Segurança e Divulgações - Guia para relatar vulnerabilidades e o processo de release.
- Calendário - Ver todos os eventos da Comunidade Kubernetes (reuniões SIG / WG, eventos etc.)
- kubernetes-dev - A lista de discussão do desenvolvimento do Kubernetes
- Fórum do Kubernetes - Fórum oficial do Kubernetes.
- Slack - Slack Oficial do Kubernetes.
- Stack Overflow - Um lugar para fazer perguntas ao usuário final do Kubernetes.
- YouTube - Canal oficial da comunidade Kubernetes.
- Prow - Kubernetes CI/CD System.
- Tide - Plugin Prow que gerencia merges e testes. Tide Dashboard
- Comandos do Bot - Comandos usados para interagir com o Kubernetes Bots (exemplos:
/cc
,/lgtm
, and/retest
) - GitHub labels - Lista de lebels usados em todo o projeto Kubernetes
- Pesquisa no código do Kubernetes, mantido por @dims
- Prow - Kubernetes CI/CD System.
- Test Grid - Veja o histórico de testes e suas informações associadas.
- Dashboard de Triagem - Junta falhas semelhantes para melhor solução de problemas.
- [email protected] - Envie uma mensagem para alguém da equipe (Colaborador com experiência na SIG) sobre algum problema da comunidade.
- [email protected] - Entre em contato com o comitê do Código de Conduta, atravéz do mailing list privado.
- [email protected] - Envie uma mensagem para o comitê diretor. Endereço público com arquivo público.
- [email protected] - Envie mensagem para o comitê diretor privativo, para itens sensíveis.
- [email protected] - Entre em contato com a equipe social da CNCF: blog, conta do twitter e outras propriedades sociais.
- Estatísticas do Desenvolvedor - Veja as estatísticas do desenvolvedor para todos os projetos da CNCF gerenciados.
Como primeiro passo, familiarize-se com o Código de Conduta.
Ao levantar um problema ou solicitar assistência, seja educado com sua solicitação:
🙂 “X não compila quando eu faço Y, você tem alguma sugestão?”
😞 “X não funciona! Por favor conserte!”
Ao fechar um PR, transmita uma mensagem explicativa e cordial explicando por que não atende aos requisitos a serem mesclados.
🙂 “Estou fechando este PR porque esse recurso não suporta o caso de uso X. Seria melhor ser implementado com a ferramenta Y. Obrigado você por trabalhar nisso.”
😞 “Por que isso não segue as convenções da API? Isso deve ser feito em outro lugar!”
Antes de enviar uma contribuição, você deve assinar o Contributor License Agreement(CLA). O projeto Kubernetes só pode aceitar uma contribuição se você ou sua empresa assinou o CLA.
Se você encontrar algum problema ao assinar o CLA, veja o solucionando problemas do cla.
GitHub Issues é o principal meio de rastrear coisas como relatórios de bugs, Pull Requests ou relatar outros problemas (issues), como testes com falha. Eles não são destinados a solicitações de suporte ao usuário. Para suporte, por favor, verifique com o guia de solução de problemas, relate o problema para o Stack Overflow ou faça o acompanhamento no Fórum do Kubernetes.
References:
- Use um template de uma issue, se houver algum disponível. Usar corretamente ajudará outros
contribuidores para responder a sua issue.
- Siga as instruções descritas no próprio modelo de assunto.
- Seja descritivo com a issue que você está criando.
- Atribuir labels apropriadas. Se você não tiver certeza, o k8s-ci-robot bot (Kubernetes CI bot) responderá ao seu problema com os rótulos necessários para que seja realizado uma triagem efetiva.
- Seja seletivo ao atribuir problemas usando
/assign @<username>
ou/cc @<username>
. Sua issue passará por uma triagem mais efetiva se utilizar as labels e atribuir a issue a mais pessoas.
- Ao lidar com uma issue, comente sobre ela e deixe que outros saibam que você está trabalhando nela para evitar trabalho duplicado.
- Quando você resolver algo por conta própria em qualquer momento futuro, comente a issue deixando as pessoas saberem antes de fechá-lo.
- Inclua referências a outros PRs ou questões (ou quaisquer materiais acessíveis), exemplo: "ref: #1234". É útil identificar que o trabalho relacionado foi endereçado em outro lugar.
Pull Request (PR) é o principal meio de contribuir com código, documentação ou outras formas de trabalho que seriam armazenadas em um repositório git.
References:
- Siga as instruções do PR, se houver um disponível. Isto vai ajudar aqueles que respondem ao seu PR.
- Se uma [correção trivial], como erro de link, erro ortográfico ou gramática, revise o documento inteiro para outros possíveis erros. Não abra vários PRs para pequenas correções no mesmo documento.
- Faça referência a quaisquer problemas relacionados ao seu PR ou a problemas que o PR possa resolver.
- Evite criar alterações excessivamente grandes em um único commit. Em vez disso, interrompa seu PR em vários pequenos pedaços lógicos. Isso torna mais fácil para o seu PR ser revisado.
- Comente sobre o seu próprio PR onde você acredita que algo pode precisar de mais explicação.
- Seja seletivo ao atribuir seu PR com
/assign @<username>
. Atribuir revisores excessivos não resultará em uma revisão de RP mais rápida. - Se o seu PR é considerado "Work in progress" com o prefixo
[WIP]
ou use o command/hold
. Isso impedirá que o PR seja mergeado até o[WIP]
ser retirado. - Se você não teve seu PR revisado, não feche e abra um novo PR com o
mesmas mudanças. Ping seus revisores em um comentário com
@<github username>
.
Ref. #3064 #3097
Todos os arquivos pertencentes ao teste SIG foram movidos de `/devel` para a nova pasta `/devel/sig-testing`.
/sig contributor-experience
/cc @stakeholder1 @stakeholder2
/kind cleanup
/area developer-guide
/assign @approver1 @approver2 @approver3
O que está nesse PR:
- Line 1 - Referência a outras questões ou PRs (#3064 #3097).
- Line 2 - Uma breve descrição do que está sendo feito no PR.
- Line 4 - SIG atribuição com o commando
/sig contributor-experience
.. - Line 5 - Revisores que possam ter interesse sobre esta questão específica ou PR são
especificado com o comando
/cc
. - Line 6 - O comando
/kind cleanup
adiciona um label que categoriza a issue ou PR relacionado com a limpeza do código, processo ou débito técnico. - Line 7 - O comando
/area developer-guide
categoriza issues ou PRs relacionados com o guia do desenvolvedor. - Line 8 - O comando
/assign
atribui um aprovador ao PR. Um aprovador será sugerido pelo k8s-ci-robot e é selecionado de a lista de proprietários no arquivo OWNERS. Eles vão adicionar um label/approve
para o PR depois de ter sido revisto.
Após o seu PR ser proposto, uma série de testes serão executados" pelo CI da plataforma Kubernetes,Prow. Se algum dos testes falhou, o k8s-ci-robot responderá ao PR com links para os testes com falha e logs disponíveis.
Enviar novos commits para o seu PR irá disparar automaticamente os testes para serem executados novamente.
Ocasionalmente, pode haver problemas com o CI da plataforma Kubernetes. Estes podem ocorrer
por uma ampla variedade de razões, mesmo que sua contribuição passe por todos os
testes. Você pode acionar uma nova execução dos testes com o comando /retest
.
Para obter mais informações sobre como solucionar problemas específicos, consulte o guia para testes.
O Kubernetes usa labels para categorizar e realizar uma triagem de issues e PRs. A aplicação das labels corretas ajudará sua issue ou PR passar pela triagem efetivamente.
References:
Labels usados com frequência:
/sig <sig name>
Atribui a SIG para a posse da issue ou PR./area <area name>
Associe a issue ou PRs a uma area específica./kind <category>
Categorizes A issue ou PR.
Antes de propor um PR, você terá que preparar seu ambiente local. Se você é novo no git, o Tutorial git Atlassian é um bom começo. Como alternativa, o tutorial de Tutorial git magic da Stanford é uma boa opção multi-idioma.
Referências:
O projeto Kubernetes usa um fluxo "Fork and Pull" que é o padrão para o
GitHub. Em termos gerais, seu fork pessoal é chamado de "origin
" e
o repositório git do projeto é chamado "upstream
". Para manter seu
fork pessoal (origin
) atualizado com o projeto (upstream
), você deve
configurá-lo localmente.
Adicione o upstream
como um repositório remoto e configure-o para que você não possa efetuar o git push para ele.
# substituir <upstream git repo> com a URL do repositório upstream
# exemplo:
# https://github.com/kubernetes/kubernetes.git
# [email protected]/kubernetes/kubernetes.git
git remote add upstream <upstream git repo>
git remote set-url --push upstream no_push
Isto pode ser verificado executando o comando git remote -v
que listará seus
repositórios remotos.
Busque todas as mudanças de upstream
e faça o "rebase" em sua branch master
local.
Isso irá sincronizar seu repositório local com o projeto upstream
.
git fetch upstream
git checkout master
git rebase upstream/master
Este é o mínimo que você deveria fazer antes de criar uma nova branch para trabalhar em sua feature ou issue.
git checkout -b myfeature
O objetivo principal de agrupar os commits (squashing) é criar um git limpo com histórico legível e com log das alterações feitas. Geralmente isso é feito na última fase de uma revisão do PR. Se você não tem certeza se deve efetuar o squashing em seus commits, é melhor errar não efetuando o squashing, e deixar para o julgamento dos outros contribuidores designados à revisar e aprovar o seu PR.