1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
|
# Cheat Sheet do Colaborador do Kubernetes
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**
- [Recursos úteis](#recursos-úteis)
- [Primeiros passos](#primeiro-passos)
- [SIGs e outros grupos](#sigs-e-outros-grupos)
- [Comunidade](#comunidade)
- [E-mails Importantes](#e-mails-importantes)
- [Fluxo de trabalho](#fluxo-de-trabalho)
- [Testes](#testes)
- [Outros Links Úteis](#outros-links-úteis)
- [Comunicar efetivamente no GitHub](#comunicando-efetivamente-no-github)
- [Como ser excelente um para o outro](#como-ser-excelente-para-outro)
- [Exemplos de Comunicação Boa/Má](#exemplos-de-boa-e-ma-comunicação)
- [Enviando uma contribuição](#enviando-uma-contribuição)
- [Assinando o CLA](#assinando-o-cla)
- [Abrindo e respondendo a issues](#abrindo-e-respondendo-a-issues)
- [Criando uma Issue](#criando-uma-issue)
- [Respondendo a uma Issue](#respondendo-a-uma-issue)
- [Abrindo uma Solicitação de Pull Request](#abrindo-um-pull-request)
- [Criando um Pull Request](#criando-um-pull-request)
- [Exemplo de descrição Pull Request](#exemplo-de-descrição-de-pull-request)
- [Solucionando problemas de Pull Request](#solucionando-problemas-de-pull-request)
- [Labels](#labels)
- [Trabalhando localmente](#trabalhando-localmente)
- [Estratégia de Branch](#estratégia-de-branch)
- [Adicionando Upstream](#adicionando-upstream)
- [Mantendo seu fork em sincronia](#mantendo-seu-fork-em-sincronia)
- [Agrupando os Commits (squash)](#agrupando-os-commits)
---
## Recursos úteis
### Primeiro passos
- [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.
### SIGs e Outros Grupos
- [Lista de grupos Master][sigs]
### Comunidade
- [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.
### Fluxo de trabalho
- [Gubernator Dashboard] - Ver Pull Requests que exigem sua atenção.
- [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]
### Testes
- [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.
### E-mails-Importantes
- community@kubernetes.io - Envie uma mensagem para alguém da equipe (Colaborador com experiência na SIG) sobre algum problema da comunidade.
- conduct@kubernetes.io - Entre em contato com o comitê do Código de Conduta, atravéz do mailing list privado.
- steering@kubernetes.io - Envie uma mensagem para o comitê diretor. Endereço público com arquivo público.
- steering-private@kubernetes.io - Envie mensagem para o comitê diretor privativo, para itens sensíveis.
- social@cncf.io - Entre em contato com a equipe social da CNCF: blog, conta do twitter e
outras propriedades sociais.
### Outros Links Úteis
- [Estatísticas do Desenvolvedor] - Veja as estatísticas do desenvolvedor para todos os projetos da CNCF gerenciados.
---
## Comunicando Efetivamente no GitHub
### Como ser excelente para outro
Como primeiro passo, familiarize-se com o [Código de Conduta].
#### Exemplos de boa e ma Comunicação
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!”
---
## Enviando uma contribuição
### Assinando o CLA
Antes de enviar uma contribuição, você deve [assinar o Contributor License
Agreement(CLA)][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].
### Abrindo e respondendo a issues
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:**
- [Labels]
- [Prow commands][commands]
#### Criando uma issue
- 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][prow] bot
([Kubernetes CI bot][prow]) 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>`][assign] ou
[`/cc @<username>`][cc]. Sua issue passará por uma triagem mais efetiva se utilizar as labels
e atribuir a issue a mais pessoas.
#### Respondendo a uma issue
- 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.
### Abrindo um Pull Request
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:**
- [Labels]
- [Prow commands][commands]
- [Processo de pull request]
- [GitHub workflow]
#### Criando um Pull Request
- 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>`][assign].
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`][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>`.
#### Exemplo de descrição de Pull Request
```
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][sigs] atribuição com o [commando][commands]
`/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`][cc].
- **Line 6** - O comando [`/kind cleanup`][kind] adiciona um [label][labels] 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`][kind] categoriza issues ou
PRs relacionados com o guia do desenvolvedor.
- **Line 8** - O comando [`/assign`][assign] atribui um aprovador ao PR.
Um aprovador será sugerido pelo [k8s-ci-robot][prow] e é selecionado de
a lista de proprietários no arquivo [OWNERS]. Eles vão adicionar um label
[`/approve`][approve] para o PR depois de ter sido revisto.
#### Solucionando problemas de Pull Request
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][prow] 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].
### Labels
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]
- [Prow commands][commands]
Labels usados com frequência:
- [`/sig <sig name>`][kind] Atribui a [SIG][SIGs] para a posse da issue
ou PR.
- [`/area <area name>`][kind] Associe a issue ou PRs a uma
[area][labels] específica.
- [`/kind <category>`][kind] [Categorizes][labels] A issue ou PR.
---
## Trabalhando Localmente
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:**
- [Tutorial git Atlassian]
- [Tutorial git magic]
- [GitHub workflow]
- [Testando localmente]
- [Guia do Desenvolvedor]
### Estratégia de Branch
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.
#### Adicionando Upstream
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
# git@github.com/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.
#### Mantendo seu fork em sincronia
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
```
#### Agrupando os commits
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.
[Guia do Contribuidor]: /contributors/guide/README.md
[Guia do Desenvolvedor]: /contributors/devel/README.md
[Gubernator dashboard]: https://gubernator.k8s.io/pr
[prow]: https://prow.k8s.io
[tide]: http://git.k8s.io/test-infra/prow/cmd/tide/pr-authors.md
[tide dashboard]: https://prow.k8s.io/tide
[Comandos do Bot]: https://go.k8s.io/bot-commands
[gitHub labels]: https://go.k8s.io/github-labels
[Pesquisa no código do Kubernetes]: https://cs.k8s.io/
[@dims]: https://github.com/dims
[Calendário]: https://calendar.google.com/calendar/embed?src=calendar%40kubernetes.io
[kubernetes-dev]: https://groups.google.com/forum/#!forum/kubernetes-dev
[slack]: http://slack.k8s.io/
[Stack Overflow]: https://stackoverflow.com/questions/tagged/kubernetes
[youtube]: https://www.youtube.com/c/KubernetesCommunity/
[Dashboard de Triagem]: https://go.k8s.io/triage
[test grid]: https://testgrid.k8s.io
[Estatísticas do Desenvolvedor]: https://k8s.devstats.cncf.io
[Código de Conduta]: /code-of-conduct.md
[solicitações de suporte ao usuário]: /contributors/guide/issue-triage.md#determine-if-its-a-support-request
[guia de solução de problemas]: https://kubernetes.io/docs/tasks/debug-application-cluster/troubleshooting/
[Fórum do Kubernetes]: https://discuss.kubernetes.io/
[Processo de pull request]: /contributors/guide/pull-requests.md
[github workflow]: /contributors/guide/github-workflow.md
[prow]: https://git.k8s.io/test-infra/prow#prow
[cla]: /CLA.md#how-do-i-sign
[solucionando problemas do cla]: /CLA.md#troubleshooting
[commands]: https://prow.k8s.io/command-help
[kind]: https://prow.k8s.io/command-help#kind
[cc]: https://prow.k8s.io/command-help#cc
[hold]: https://prow.k8s.io/command-help#hold
[assign]: https://prow.k8s.io/command-help#assign
[SIGs]: /sig-list.md
[guia para testes]: /contributors/devel/sig-testing/testing.md
[labels]: https://git.k8s.io/test-infra/label_sync/labels.md
[trivial fix]: /contributors/guide/pull-requests.md#10-trivial-edits
[GitHub workflow]: /contributors/guide/github-workflow.md#3-branch
[agrupar os commits]: /contributors/guide/pull-requests.md#6-squashing-and-commit-titles
[owners]: /contributors/guide/owners.md
[Testando localmente]: /contributors/guide/README.md#testing
[Tutorial git Atlassian]: https://www.atlassian.com/git/tutorials
[Tutorial git magic]: http://www-cs-students.stanford.edu/~blynn/gitmagic/
[Informações de Segurança e Divulgações]: https://kubernetes.io/docs/reference/issues-security/security/
[approve]: https://prow.k8s.io/command-help#approve
|