Проект Helm принимает вклады через запросы на вытягивание (pull requests) в GitHub. Этот документ описывает процесс, чтобы помочь вам сдать свой вклад на рассмотрение.
Большинство времени, когда вы находите ошибку в Helm, она должна быть отмечена с помощью GitHub issues. Однако, если вы сообщаете о уязвимости безопасности, пожалуйста, отправьте отчет по электронной почте на адрес cncf-helm-security@lists.cncf.io. Это даст нам возможность попробовать исправить проблему до того, как она будет использована злоумышленниками.
Helm v4 находится в разработке на ветке main
. В период разработки Helm v4 и некоторое время после его выпуска, Helm v3 продолжит поддерживаться и развиваться на ветке dev-v3
. Helm v3 будет получать исправления ошибок и обновления для новых версий Kubernetes. Новые функции и значительные изменения будут реализованы в Helm v4. Для обратной совместимости функции могут быть перенесены в Helm v3 при наличии исключения. Ошибки должны быть сначала исправлены в Helm v4, а затем перенесены в Helm v3.
Подпись — это простая строка в конце объяснения коммита. Все коммиты должны быть подписаны. Ваша подпись свидетельствует о том, что вы создали патч или имеете право представить этот материал. Правила довольно простые, если вы можете удостовериться в следующем (из developercertificate.org):
Свидетельство разработчика о происхождении
Версия 1.1
Авторское право (C) 2004, 2006 The Linux Foundation и его участников.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
Каждому разрешается делать и распространять точные копии этого лицензионного документа,
но изменять его запрещено.
Свидетельство разработчика о происхождении 1.1
При внесении вклада в этот проект, я свидетельствую, что:
(a) Вклад был создан полностью или частично мной и у меня есть право представить его под открытой лицензией,
указанной в файле;
(b) Вклад основан на предыдущей работе, которая, по моему мнению, покрыта подходящей открытой лицензией,
и у меня есть право под этой лицензией представлять эту работу с модификациями, полностью или частично
созданными мной, под такой же открытой лицензией (если я не разрешён представить её под другой лицензией),
как указано в файле;
(c) Вклад был предоставлен мне непосредственно другим человеком, который свидетельствовал (a), (b) или (c),
и я не изменил его.
(d) Я понимаю и соглашаюсь, что этот проект и вклад являются общественными и что запись вклада (включая все
личные данные, которые я предоставляю вместе с ним, включая моё свидетельство) хранится постоянно и может быть
перераспределена согласно этому проекту или связанным с ним открытым лицензиям.
Затем просто добавьте строку ко всем сообщениям коммитов Git:
Signed-off-by: Иван Петров <ivan.petrov@example.com>
Используйте свое настоящее имя (извините, никаких псевдонимов или анонимных вкладов).
Если вы установили свои конфигурации Git user.name
и user.email
, вы можете автоматически подписывать свои коммиты командой git commit -s
.
Для обновления ваших конфигураций Git с user.email
используйте следующую команду:
git config --global user.email ivan.petrov@example.com
Эта команда обновляет ваши конфигурации Git с user.name
:
git config --global user.name "Иван Петров"
Примечание: Если информация о ваших конфигурациях Git установлена правильно, просмотр информации git log
вашего коммита будет выглядеть примерно так:
Автор: Иван Петров <ivan.petrov@example.com>
Дата: Чт фев 2 11:41:15 2018 -0800
Обновление README
Signed-off-by: Иван Петров <ivan.petrov@example.com>
Обратите внимание, что строки Автор
и Signed-off-by
совпадают. Если они не совпадают, ваш запрос будет отклонен автоматической проверкой DCO.
Независимо от того являетесь ли вы пользователем или вкладчиком, официальные каналы поддержки включают:
Перед тем как открыть новый вопрос или отправить новый запрос на вытягивание, полезно поискать информацию по проекту — возможно, кто-то уже сообщил об этом вопросе или известна данная проблема.
Мы используем майлстоны для отслеживания прогресса конкретных планируемых выпусков.
Например, если последняя текущая версия — 3.2.1
, то вопрос или запрос на вытягивание, относящийся к конкретному ближайшему выпуску исправления ошибок или новой функциональности, мог бы попасть в один из двух активных майлстоунов: 3.2.2
или 3.3.0
.
Вопросы и запросы на вытягивание, которые считаются несовместимыми с предыдущими версиями, могут быть добавлены в обсуждаемые пункты для Helm 4 с label:v4.x. Вопрос или запрос на вытягивание, которым мы еще не уверены, будем ли мы решать, не будет добавлен ни в какой майлстон.
Майлстон (и соответственно выпуск) можно закрыть, когда все открытые вопросы/запросы были закрыты или перемещены в другой майлстон и соответствующий выпуск был опубликован.
Helm поддерживает строгую приверженность обратной совместимости. Все наши изменения протокола и формата обратно совместимы между каждым основным выпуском. Ни одна функция, флаг или команда не удаляется или существенно не изменяется (за исключением случаев, когда требуется исправление проблемы безопасности).
Мы также остаемся приверженными тому, чтобы не менять общедоступные определения Go-библиотек внутри директории pkg/
нашего исходного кода способом, нарушающим обратную совместимость.Для более подробной информации о правилах обратной совместимости для минорных и патч-выпусков Helm, прочтите HIP-0004.
Для краткого описания наших правил обратной совместимости для выпусков между 3.0 и 4.0:
pkg/
должны оставаться обратно совместимыми, хотя код внутри cmd/
и internal/
может быть изменен от выпуска к выпуску без уведомления.Вопросы используются как основной метод для отслеживания всего, связанного с проектом Helm.
Существует 5 типов вопросов (каждый со своим соответствующим тикетом):
question/support
: Эти вопросы предназначены для поддержки или запросов функциональности, которые мы хотим иметь записью для будущего использования. Обычно это вопросы, слишком сложные или большие, чтобы хранить их в канале Slack или имеют особенный интерес для всей группы. В зависимости от обсуждения, эти вопросы могут стать feature
или bug
.proposal
: Используется для предметов (как этот), которые предлагают новые идеи или функциональность, требующие большего обсуждения сообщества. Это позволяет получить отзывы от других членов сообщества перед тем, как функциональность будет фактически разработана. Это не требуется для малых добавлений. Конечное решение о необходимости предложения принадлежит основным поддерживателям. Все вопросы, являющиеся предложениями, должны иметь как тикет, так и название вопроса в виде "Proposal: [остальная часть названия]".feature
: Эти вопросы отслеживают конкретные запросы на функциональность и идеи до тех пор, пока они не завершены. Они могут эволюционировать из proposal
или могут быть представлены отдельно в зависимости от размера.bug
: Эти вопросы отслеживают ошибки в коде.docs
: Эти вопросы отслеживают проблемы с документацией (например, недостающую или неполную).Жизненный цикл вопросов главным образом управляем основными поддерживателями, но является полезной информацией для всех, кто вносит вклад в Helm. Все типы вопросов следуют одному общему жизненному циклу. Различия отмечаются ниже.
good first issue
).feature
или proposal
, должны иметь план развития Helm (HIP). Смотрите Предложение идеи. Меньшие улучшения качества жизни освобождаются от этого требования.feature
или bug
, должны быть связаны с запросом на вытягивание, решающим их.feature
или bug
(будь то поддерживатель или участник сообщества), должен либо назначить вопрос себе, либо сделать комментарий в вопросе, говоря, что он берет его на себя.proposal
и support/question
должны оставаться открытыми до тех пор, пока они не будут решены или если они не были активны более 30 дней. Это поможет поддерживать список вопросов управляемым и уменьшить шум. Если вопросу нужно остаться открытым, метка keep open
может быть добавлена.Перед тем как предложить новую идею в проект Helm, пожалуйста, убедитесь, что вы составили предложение по улучшению Helm (HIP). Предложение по улучшению Helm — это документ-проект, который описывает новую функциональность для проекта Helm. Предложение должно содержать краткое техническое описание и мотивацию для данной функции.
Также стоит рассмотреть возможность проверки своей идеи с сообществом через почтовый список cncf-helm. Общее обсуждение идеи перед написанием предложения может сэкономить время потенциального автора. Многие идеи уже были предложены; вполне возможно, что кто-то еще в сообществе работает над аналогичной идеей или уже был создан аналогичный проект.
HIPы отправляются в репозиторий helm/community. HIP 1 описывает метод создания HIP и процесс его проверки.
После одобрения вашего предложения следуйте руководству разработчика, чтобы приступить к работе.
Стандарты и правила оформления кода объясняются в официальном руководстве разработчика.
size
), bug
или feature
, а также awaiting review
после применения всех меток. Дополнительные сведения о метках представлены в разделе Метки.awaiting review
, участники могут рассматривать его при наличии свободного времени. Участник, взявший задачу, должен сам запрашивать обзор.size/S
или выше требуют двух одобрений от участников до слияния. Те с меткой size/XS
зависят от решения участников. Для более подробной информации см. раздел Метки размера.needs rebase
).keep open
.OWNERS
, этот пользователь обязательно должен слить свои собственные PR или явно запросить другого владельца сделать это вместо него.OWNERS
, любой основной участник может слить PR.Документационные PR должны быть сделаны на репозиторий документов: https://github.com/helm/helm-www. Поддержание актуальной документации для Helm очень желательно и рекомендовано для всех изменений, доступных пользователям. Актуальная и полезная документация критически важна для эффективного представления поведения Helm широкому кругу пользователей.
Мелкие, случайные изменения/PR для Helm, которые вводят изменения, доступные пользователям, и которым потребуется обновление документации, должны применять метку docs needed
. Большие изменения, связанные с HIP, должны отслеживать документацию через этот HIP. Метка docs needed
не блокирует PR, и участники/обзорщики PR должны применять своё усмотрение, применяя эту метку.
Если ваш вклад требует профилирования для проверки использования памяти и/или ЦПУ, вы можете установить переменные окружения HELM_PPROF_CPU_PROFILE=/path/to/cpu.prof
и/или HELM_PPROF_MEM_PROFILE=/path/to/mem.prof
для сбора данных профилирования во время выполнения для анализа. Вы можете использовать инструмент pprof Go для просмотра результатов.
Пример анализа собранного профилировочного данных
HELM_PPROF_CPU_PROFILE=cpu.prof HELM_PPROF_MEM_PROFILE=mem.prof helm show all bitnami/nginx
# Визуализировать графики. Вам потребуется установленный пакет graphviz в системе
go tool pprof -http=":8000" cpu.prof
go tool pprof -http=":8001" mem.prof
Каждую неделю один из основных участников будет выполнять роль "триажера", начиная после общественных встреч по четвергам. Этот человек будет отвечать за триаж новых PR и проблем в течение рабочего дня.
Следующие таблицы определяют все типы меток, используемые для Helm. Они разделены по категориям.
| ----- | ----------- |
| bug
| Означает, что проблема является багом или PR является исправлением бага |
| критический
| Означает, что проблема или PR является критической. Это значит, что решение PR или проблемы является первостепенной задачей и должно быть решено как можно скорее |
| документация
| Индикатор того, что проблема или PR является изменением документации |
| функциональность
| Означает, что проблема является запросом на функциональность или PR является реализацией функциональности |
| сохранить открытым
| Означает, что проблема или PR должна быть сохранена открытой более 30 дней бездействия |
| переформатировать
| Индикатор того, что проблема является переформатированием кода и не является исправлением бага или добавлением дополнительной функциональности |
Метка | Описание |
---|---|
помощь нужна |
Означает, что проблема требует помощи от сообщества для её решения |
предложение |
Означает, что проблема является предложением |
вопрос/поддержка |
Означает, что проблема является запросом на поддержку или вопросом |
хорошая первая проблема |
Означает, что проблема является хорошей первой проблемой для человека нового в Helm |
не будем исправлять |
Означает, что проблема была обсуждена и не будет реализована (или принята в случае предложения) |
Метка | Описание |
---|---|
ожидает обзора |
Индикатор того, что PR был триажирован и готов для обзора |
разрыв |
Индикатор того, что PR содержит разрывы (например, изменения API) |
в процессе |
Индикатор того, что участник рассматривает PR, даже если ещё нет обзора |
необходимо перебазировать |
Индикатор того, что PR необходимо перебазировать перед слиянием |
необходимо выбрать |
Индикатор того, что PR необходимо выбрать в ветку функциональности (обычно ветку исправления ошибок). После выбора, метка выбрано должна быть применена, а эта метка удалена |
выбрано |
Этот PR был выбран в ветку функциональности |
необходима документация |
Отслеживает PR, которые вводят функциональность/изменение, для которых обновление документации было бы желательным (не блокирующим). После создания подходящего PR документации, эта метка должна быть удалена |
Размерные метки используются для указания, насколько "опасен" PR. Ниже приведены руководства по назначению этих меток, но конечное решение остаётся за участниками. Например, даже если PR меняет всего 30 строк кода в одном файле, но затрагивает ключевые функции, он вероятно будет помечен как size/L
, так как требует согласования от нескольких людей. Наоборот, PR, добавляющий небольшую функциональность, но требующий ещё 150 строк тестов для покрытия всех случаев, мог бы быть помечен как size/S
, даже если количество строк больше, чем указано ниже.
Любые изменения от сообщества, помеченные как size/S
или выше, должны быть тщательно протестированы перед слиянием и всегда требуют одобрения от двух основных участников. PR, отправленные основным участником, независимо от размера, требуют одобрения только от одного дополнительного участника. Это гарантирует, что минимум два участника осведомлены обо всех значительных PR, внесённых в кодовый базис.
Метка | Описание |
---|---|
size/XS |
Обозначает запрос на внесение изменений (PR), который затрагивает от 0 до 9 строк, игнорируя сгенерированные файлы. Может потребоваться минимальное тестирование в зависимости от характера изменения. |
size/S |
Обозначает запрос на внесение изменений (PR), который затрагивает от 10 до 29 строк, игнорируя сгенерированные файлы. Может потребоваться небольшое количество ручного тестирования. |
size/M |
Обозначает запрос на внесение изменений (PR), который затрагивает от 30 до 99 строк, игнорируя сгенерированные файлы. Должна требоваться ручная проверка. |
size/L |
Обозначает запрос на внесение изменений (PR), который затрагивает от 100 до 499 строк, игнорируя сгенерированные файлы. |
size/XL |
Обозначает запрос на внесение изменений (PR), который затрагивает от 500 до 999 строк, игнорируя сгенерированные файлы. |
size/XXL |
Обозначает запрос на внесение изменений (PR), который затрагивает более 1000 строк, игнорируя сгенерированные файлы. |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )