25 KiB
Шпаргалка для контриб'юторів Kubernetes
Список загальних джерел для контриб'юторів Kubernetes, корисні поради, прийоми та найкращі практики, що застосовуються у Kubernetes. Це "TL;DR", або стислий довідник корисної інформації, що має на меті покращити ваш досвід контриб'ютора на GitHub.
Зміст
- Шпаргалка для контриб'юторів Kubernetes
Корисні джерела
Початок роботи
- Керівництво для контриб'юторів - З чого почати свій внесок до проекту Kubernetes.
- Керівництво для розробників - Як зробити свій внесок безпосередньо у код проекту Kubernetes.
- Безпека і розкриття інформації - Інструкція з питань виявлення вразливостей і безпеки релізу.
SIGs та інші групи
Спільнота
- Календар - Перегляд усіх подій спільноти Kubernetes (зустрічі SIG та робочих груп, події, тощо)
- kubernetes-dev - Поштова розсилка для розробників Kubernetes.
- Kubernetes форум - Офіційний форум Kubernetes.
- Канали Slack - Офіційний Slack Kubernetes.
- Stack Overflow - Платформа, де кінцеві користувачі Kubernetes можуть ставити свої запитання.
- YouTube канал - Офіційний канал спільноти Kubernetes.
Робочий процес
- Gubernator Dashboard - Перегляд вхідних та вихідних Pull Request, що потребують вашої уваги.
- Prow - Kubernetes CI/CD система.
- Tide - Prow плаґін для управління процесом злиття змін до основної гілки репозиторія (merge) і тестами. Tide Dashboard
- Команди бота - Команди для взаємодії з ботами Kubernetes (наприклад:
/cc,/lgtmі/retest) - GitHub мітки - Список міток, які використовуються в проекті Kubernetes
- Пошук у коді Kubernetes, за підтримки @dims
Тести
- Prow - Kubernetes CI/CD система.
- Test Grid - Перегляд історії тестів та дотичної до них інформації.
- Triage Dashboard - Агрегування схожих помилок для їх кращого виправлення.
Важливі поштові адреси
- community@kubernetes.io - Написати листа комусь із команди спільноти (SIG Contributor Experience) щодо непорозумінь у спільноті.
- conduct@kubernetes.io - Написати листа до Комітету з контролю поведінки в Kubernetes, приватна розсилка.
- github@kubernetes.io - Надіслати приватного листа до Адміністративної команди GitHub з приводу чутливих питань.
- steering@kubernetes.io - Надіслати листа до комітету управління. Загальнодоступна адреса із публічним архівом.
- steering-private@kubernetes.io - Надіслати листа до комітету управління у приватному порядку, з приводу чутливих питань.
- social@cncf.io - Зв’язатися із командою соціальних мереж CNCF; блог, Twitter акаунт, решта соціальних сервісів.
Інші корисні посилання
- Developer Statistics - Переглянути статистику розробки за всіма проектами CNCF.
- Kubernetes Patch Release Розклад патч-релізів Kubernetes і контактна інформація команди.
Ефективне спілкування в GitHub
Як бути найкращими одне для одного
Насамперед, ознайомтеся із Кодексом поведінки Спільноти.
Приклади хорошого/поганого спілкування
Коли ви про щось питаєте чи шукаєте допомоги, будь ласка, будьте ввічливі:
🙂 “X не компілюється, коли я роблю Y. Є якісь припущення?”
😞 “X не працює! Будь ласка, виправіть це!”
Якщо ви відхиляєте PR, будь ласка, надайте інформативне та доброзичливе пояснення, чому запропоновані зміни не можуть бути об'єднані з основною гілкою (merged).
🙂 “Я відхиляю цей PR тому, що ця функціональність не може підтримувати сценарій використання X. У запропонованій формі її краще реалізувати з інструментом Y. Дякую за вашу роботу.”
😞 “Чому це не узгоджується з домовленостями щодо API? Це має бути зроблене в іншому місці!”
Внесок до проекту
Підписання CLA
Перш ніж зробити свій внесок, ви повинні підписати Ліцензійну угоду учасника (CLA). Ваш внесок до проекту Kubernetes може бути прийнято лише за умови, що ви чи ваша компанія підписали CLA.
Якщо у вас виникли труднощі із підписанням CLA, дотримуйтесь рекомендацій інструкції з вирішення проблем CLA.
Відкрити та відреагувати на Issue
GitHub Issue є основним джерелом для відстеження інформації з таких питань, як звіти про помилки, запити на вдосконалення, або для повідомлень, наприклад, про невдалі тести. Вони не призначені для підтримки користувачів. Для цього скористайтеся інструкцією із усунення несправностей, повідомте про проблему до Stack Overflow чи Kubernetes форум.
Посилання:
Створення Issue
- Скористайтеся шаблоном issue, якщо такий є. Використання відповідного шаблона допоможе іншим учасникам, які відповідатимуть на ваш запит.
- Дотримуйтесь рекомендацій, наведених у самому шаблоні.
- Детально опишіть питання, з яким звертаєтесь.
- Проставте відповідні мітки. Якщо ви не впевнені, бот k8s-ci-robot (Kubernetes CI bot) відповість на ваш issue і запропонує мітки, необхідні для пріоритизації вашого питання.
- Дотримуйтесь вибірковості, коли за допомогою
/assign @<username>або/cc @<username>залучаєте до роботи над вашим питанням інших осіб. Використання правильних міток є набагато ефективнішим для пріоритизації вашого запиту, аніж залучення більшої кількості учасників.
Реакція на Issue
- Якщо ви починаєте роботу над якимось запитом (issue), залиште про це коментар. Так інші учасники знатимуть, над чим ви працюєте, і не робитимуть подвійної роботи.
- Якщо ви самостійно розв’язали якесь питання, залиште коментар по цьому запиту, а вже потім закривайте його.
- Долучайте посилання на PR, інші запити (issues) чи будь-які інші наявні матеріали, наприклад: "ref: #1234". Доцільно зазначити, що роботи з даного питання вже велися деінде.
Відкрити Pull Request
Pull request (PR) є основним засобом, за допомогою якого відбувається додання коду, документації чи іншого доробку до Git-репозиторія.
Посилання:
Створення Pull Request
- Дотримуйтесь рекомендацій, наведених у шаблоні pull request, якщо такий є. Це допоможе іншим учасникам, які відповідатимуть на ваш PR.
- У випадку незначних виправлень, як-от неробоче посилання, друкарська або граматична помилка, перегляньте весь документ на предмет інших потенційних помилок. Не відкривайте численних PR для невеликих виправлень у тому самому документі.
- Посилайтеся на будь-які запити (issue), що стосуються вашого PR, або такі, які цей PR може вирішити.
- Уникайте завеликої кількості змін в одному коміті. Натомість розбийте ваш PR на декілька невеликих, логічно зв’язаних комітів. Цим ви полегшите перевірку вашого PR.
- Лишайте коментарі до свого PR щоразу, як вважаєте за потрібне пояснити щось детальніше.
- Дотримуйтесь вибірковості, коли за допомогою
/assign @<username>залучаєте до роботи над вашим PR інших осіб. Надмірна кількість рецензентів не пришвидшить перевірки вашого PR. - Якщо ваш PR "у роботі" ("Work in progress"), додайте до його назви префікс
[WIP]або використайте команду/hold. Наявність[WIP]або hold дозволить уникнути автоматичного злиття змін (merge). - Якщо ваш PR не перевірили, не потрібно закривати його і відкривати новий із тими самими змінами. Зверніться до своїх рецензентів у коментарі, скориставшись
@<github username>. - Якщо вашому PR не приділяється достатньої уваги, опублікуйте посилання на PR у Slack-каналі
#pr-reviewsдля того, щоб знайти додаткових рецензентів.
Приклад опису PR
Ref. #3064 #3097
Всі файли, що належать SIG testing, були переміщені із `/devel` до нової директорії `/devel/sig-testing`.
/sig contributor-experience
/cc @stakeholder1 @stakeholder2
/kind cleanup
/area developer-guide
/assign @approver1 @approver2 @approver3
Що в цьому PR:
- Рядок 1 - Посилання на інші issue або PR (#3064 #3097).
- Рядок 2 - Стислий опис того, що було зроблено в PR.
- Рядок 4 - Команда
/sig contributor-experienceвизначає дотичну до PR SIG. - Рядок 5 - Команда
/ccвизначає рецензентів, яких може зацікавити цей issue або PR. - Рядок 6 - Команда
/kind cleanupдодає мітку, що характеризує issue або PR як такий, що стосується чистки коду, процесу або технічного боргу. - Рядок 7 - Команда
/area developer-guideхарактеризує issue або PR як такий, що має відношення до керівництва для розробників. - Рядок 8 - Команда
/assignвизначає погоджувача (approver) PR. Погоджувач обирається ботом k8s-ci-robot зі списку відповідальних осіб, що міститься у файлі OWNERS. Після перевірки PR вони додадуть до нього мітку/approve.
Усунення помилок у Pull Request
Після того, як ви зробили запит на прийняття змін, Kubernetes CI-платформа Prow виконує ряд тестів. У разі, якщо хоча б один із тестів завершився невдало, бот k8s-ci-robot опублікує посилання на невдалі тести і наявні логи у відповіді на PR.
Додання нових комітів у ваш PR автоматично перезапускає тести.
Інколи можуть виникнути складнощі у роботі Kubernetes CI-платформи. Це може статися з багатьох причин, навіть якщо ваш код успішно пройшов локальні тести. Ви можете перезапустити тести командою /retest.
Детальніше про вирішення проблем, пов’язаних із певними тестами, дивіться в керівництві з тестування.
Мітки
Kubernetes використовує мітки для розподілу Issues та Pull Requests за категоріями та для визначення пріоритетності їх виконання. Використання відповідних міток сприятиме ефективній пріоритизації вашого issue чи PR.
Посилання:
Часто використовувані мітки:
/sig <sig name>Призначити SIG відповідальною за issue чи PR./area <area name>Віднести issue чи PR до певної зони./kind <category>Віднести issue чи PR до певної категорії.
Робота локально
Перш ніж зробити PR, вам необхідно виконати певний рівень роботи локально. Якщо ви раніше не працювали із git, git-посібник Atlassian стане хорошою точкою для старту. Гарною альтернативою йому буде стенфордський багатомовний посібник Git magic.
Посилання:
- Git-посібник Atlassian
- Git magic
- Робочий процес у GitHub
- Тестування локально
- Керівництво для розробників
Стратегія галуження
Проект Kubernetes використовує стандартний для GitHub робочий процес "Fork and Pull" (створення відгалуження від проекту і отримання останніх змін із віддаленого репозиторія проекту). У термінології git ваше особисте відгалуження називатиметься "origin", а фактичний git-репозиторій проекту - "upstream". Для того, щоб підтримувати синхронізацію вашої особистої гілки (origin) із гілкою проекту (upstream), налаштуйте конфігурацію у вашій локальній копії.
Додання Upstream
Додайте upstream як віддалений репозиторій і налаштуйте таким чином, щоб ви не могли відправити до нього зміни.
# замініть <upstream git repo> на url upstream-репозиторія
# наприклад:
# 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
Для перевірки запустіть команду git remote -v , яка видасть перелік віддалених репозиторіїв, які у вас налаштовані.
Синхронізація вашого відгалуження (fork)
Отримайте останні зміни з основного репозиторія upstream і "перебазуйте" їх у вашу локальну гілку master. Це синхронізує ваш локальний репозиторій із основним репозиторієм проекту (upstream). Відправте локальні зміни до своєї віддаленої мастер-гілки (remote master).
git fetch upstream
git checkout master
git rebase upstream/master
git push
Це - необхідний мінімум для створення нової гілки, у якій ви працюватимете над розробкою функціональності чи виправленням помилок.
git checkout -b myfeature
Об’єднання комітів (Squashing Commits)
Об’єднання комітів використовується для створення чіткої та зрозумілої історії git-комітів або журналу внесених змін. Зазвичай це роблять на останньому етапі перевірки PR. Якщо ви не впевнені, чи потрібно вам об’єднувати коміти, краще помилитись і лишити їх як є. Це питання вирішуватимуть учасники, які перевірятимуть та погоджуватимуть ваш PR.