1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/forview-storm

Клонировать/Скачать
DEVELOPER.md 28 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 24.06.2025 03:21 f4d009d

Разработческая документация

Данный документ содержит информацию, которая является важной для коммиттеров и участников проекта Storm. Включает в себя информацию о процессах разработки и политиках, а также инструментах, которые мы используем для облегчения этих процессов.


Содержание


Добро пожаловать!

Если вы читаете этот документ, то вы заинтересованы в участии в проекте Storm — большое спасибо за это! Все формы участия приветствуются: идеи, документация, код, патчи, отчеты о багах, запросы новых функций и т.д. Вам не обязательно быть программистом, чтобы принять участие.# Процессы работы

Этот раздел объясняет, как выполнять обычные действия, такие как отчёт о баге или объединение пулл-запроса.

Отчёт о баге

Чтобы сообщить о баге, вам следует открыть проблему в нашем трекере проблем, который суммирует описание бага. Установите поле формы "Тип проблемы" на "Баг". Если вы ещё не использовали трекер проблем, вам потребуется зарегистрироваться (бесплатно), войти и затем нажать на синий "Создать проблему" в верхнем меню навигации.

Чтобы помочь нам понять и исправить баг, было бы здорово, если бы вы могли предоставить нам следующую информацию:

  1. Шаги для воспроизведения бага. Это включает информацию, например, о версии Storm, которую вы использовали.
  2. Ожидаемое поведение.
  3. Реальное, некорректное поведение. Пожалуйста, свободно используйте трекер проблем для поиска существующих проблем (также известных как билеты), которые уже описывают проблему; если такой билет существует, пожалуйста, добавьте вашу информацию в виде комментария.

Если вы хотите предоставить исправление вместе с отчётом о баге: Это замечательно! В этом случае, пожалуйста, отправьте нам запрос на слияние, как описано ниже в разделе Создание запроса на слияние. Вы также можете прикрепить файл с исправлением к билету, но мы предпочитаем запросы на слияние, так как они легче для работы.

Запрос нового функционала

Чтобы запросить новый функционал, вы должны открыть тикет в нашем трекере проблем и кратко описать желаемую функциональность. Установите поле формы "Тип проблемы" на "Новый функционал". Если вы ещё не использовали трекер проблем, вам потребуется зарегистрироваться (бесплатно), войти и затем нажать на синюю кнопку "Создать проблему" в верхней навигационной панели.

Вы также можете отправить сообщение на мейллист пользователей Storm.

Внести вклад в код

Перед тем как приступить к внесению вклада в код, мы рекомендуем вам ознакомиться с кодовой базой Storm, особенно прочитать Документацию по реализации.Если вас интересует внесение вклада в код Storm, но вы не знаете, с чего начать: В этом случае вы должны просмотреть наш трекер проблем для открытых проблем и задач. Вы можете начать с проблем, предназначенных для новичков и более простых задач (проблемы для новичков и тривиальные задачи), потому что они требуют изучения только изолированной части кодовой базы и являются относительно небольшим объемом работы. Пожалуйста, используйте идиоматический стиль Clojure, как объяснено в [этой инструкции по стилю Clojure][clj-SG]. Другим полезным источником является [стандарты кодирования библиотек Clojure][clj-LCS]. Возможно, самым важным аспектом является последовательное написание ясного docstring для функций, объясняющего возвращаемое значение и аргументы. На момент написания данный кодовый базис Storm мог бы выиграть от различных улучшений стиля. [clj-SG]: https://github.com/bbatsov/clojure-style-guide [clj-LCS]: http://dev.clojure.org/display/community/Library+Coding+StandardsКонtributionы в базу кода Storm должны отправляться в виде pull request'ов на GitHub. Для получения подробной информации о том, как создать pull request, обратитесь к разделу Создание pull request ниже.

  • Для маленьких патчей, вы можете свободно отправлять pull request'ы непосредственно для этих патчей.

  • Для более крупных вкладов в код, пожалуйста, используйте следующий процесс. Цель этого процесса — предотвратить любую потерянную работу и выявить проблемы дизайна на ранних этапах.

    1. Откройте задачу в нашем трекере задач, если аналогичная задача ещё не существует. Если аналогичная задача уже существует, вы можете принять участие в работе над этой задачей.
    2. Оставьте комментарий к задаче с вашим планом реализации задачи. Объясните, какие части кодовой базы вы собираетесь изменить и как всё будет работать вместе.
    3. Коммитеры проекта Storm будут работать с вами над дизайном, чтобы убедиться, что вы на правильном пути.
    4. Реализуйте вашу задачу, создайте pull request (см. ниже) и продолжайте работу оттуда.

Вклад в документацию

Вклады в документацию очень приветствуются!

Вы можете вносить изменения в документацию через pull request, так же как и в код. Основная директория — это docs/, и вы можете обратиться к docs/README.md для получения информации о том, как собирать / тестировать сайт.

Pull requests

Создание pull request

Pull request'ы должны выполняться против доступного для чтения репозитория Git по адресу https://github.com/apache/storm.

Для получения информации о том, как создать pull request, обратитесь к разделу Создание pull request. Вкратце вам потребуется выполнить следующие шаги:

  1. Создайте форк репозитория Storm на GitHub по адресу https://github.com/apache/storm/ в вашем личном аккаунте GitHub. Подробные инструкции доступны по ссылке Создание форка репозитория.
  2. Примите любые изменения в вашем форке.
  3. Отправьте запрос на слияние в репозиторий Storm на GitHub, который вы создали в шаге 1. Если ваш запрос на слияние связан с существующей задачей Storm в JIRA — например, потому что вы ранее сообщили об ошибке через JIRA — то добавьте номер соответствующей задачи JIRA в начало названия вашего запроса на слияние (например, STORM-123: ...).

Вы можете ознакомиться с синхронизацией форка для получения инструкций по поддержанию вашего форка в актуальном состоянии с последними изменениями в официальном репозитории storm.

### Утверждение запроса на слияние

УСТАВ описывает условия утверждения для кодовых и некодовых изменений.

Дополнительные детали можно найти в разделе Утверждения -> Действия.

Слияние запроса на слияние или патча

Этот раздел применим только для коммиттеров.

Важно: Запрос на слияние должен быть правильно утвержден до того, как вы сможете его слить.

Коммиттеры, интегрирующие патчи или запросы на слияние, должны использовать официальный репозиторий Apache по адресу https://git-wip-us.apache.org/repos/asf/storm.git.

Чтобы включить запрос на слияние, вам следует следовать командным строковым инструкциям, отправленным GitHub.

  1. Перейдите к вашему локальному копию официального репозитория Apache, переключитесь на ветку master, и убедитесь, что она обновлена.

     $ git checkout master
     $ git fetch origin
     $ git merge origin/master
  2. Создайте локальную ветку для интеграции и тестирования запроса на слияние. Вы можете назвать ветку в соответствии с номером задачи Storm, связанной с запросом на слияние (например: STORM-1234).

     $ git checkout -b <local_test_branch>  # Например: git checkout -b STORM-1234
  3. Слейте запрос на слияние в вашу локальную тестовую ветку.

     $ git pull <remote_repo_url> <remote_branch>4. Предположим, что запрос на слияние был объединён без конфликтов:

    Обновите верхний уровень файла CHANGELOG.md, и добавьте номер задачи JIRA (например: STORM-1234) и описание задачи в журнал изменений. Убедитесь, что вы указываете номер задачи JIRA в комментариях к коммитам там, где это применимо.5. Запустите любые тесты на целостность, которые вы считаете необходимыми.

  4. Как только вы уверены, что все в порядке, вы можете слить вашу локальную тестовую ветку в вашу локальную ветку master, и отправить изменения обратно в официальный репозиторий Apache.

     # Запрос на слияние выглядит хорошо, журнал изменений был обновлен, и т.д. Мы готовы к отправке.
     $ git checkout master
     $ git merge <local_test_branch>  # Например: git merge STORM-1234
     # На данном этапе наш локальный ветка master готова, поэтому теперь мы будем отправлять изменения
     # в официальный репозиторий Apache. Примечание: Читаемый зеркальный репозиторий на GitHub будет автоматически обновлен
     # через короткое время после того, как вы отправите изменения в репозиторий Apache.
     $ git push origin master
  5. Последний шаг — обновление соответствующей заявки в JIRA. Перейти в JIRA и закройте заявку. Убедитесь, что поле Fix Version/s установлено на версию, в которую вы отправили свои изменения. Обычно хорошей практикой является благодарность автору pull request за его вклад, если вы еще этого не сделали.

Сборка кода и запуск тестов

Следующие команды должны выполняться из корневого каталога.

# Сборка кода и запуск тестов (требует установки nodejs, python и ruby)
# `mvn clean package` завершится ошибкой, так как storm-core требует storm-maven-plugin.
# Этот плагин следует установить до компиляции storm-core.
$ mvn clean install    # Сборка кода и запуск тестов с указанием значения по умолчанию для времени выполнения теста (в миллисекундах)
$ export STORM_TEST_TIMEOUT_MS=10000
$ mvn clean install

# Сборка кода, но пропуск тестов
$ mvn clean install -DskipTests=true

Если вы изменили storm.thrift, вам нужно будет сгенерировать код thrift для Java и Python перед сборкой всего проекта.

cd storm-core/src
sh genthrift.sh

Вы также можете запускать тесты выборочно через Clojure REPL. В следующем примере запускаются тесты в auth_test.clj, который имеет пространство имён backtype.storm.security.auth.auth-test.

Сначала запустите REPL из соответствующего подпроекта (здесь: storm-core):

$ cd storm-core/
$ mvn clojure:repl

Теперь запустите тесты в auth_test.clj в REPL:

;; Вы можете использовать как абсолютные, так и относительные пути к файлу .clj.
(load-file "test/clj/backtype/storm/security/auth/auth_test.clj")
(ns backtype.storm.security.auth.auth-test)
(run-tests)

Совет: IDE, такие как IntelliJ IDEA, поддерживают встроенный Clojure REPL, который также можно использовать для выборочного запуска тестов. Иногда вы можете заметить, что тесты проходят/не проходят в зависимости от используемого REPL, что — хотя это и раздражает — может быть полезно для устранения ошибок.

Создание дистрибутивной версии Storm (пакетирование)Вы можете создать дистрибутив (как это можно скачать с сайта Apache) следующим образом. Обратите внимание, что инструкции ниже не используют плагин Maven для выпуска, так как создание официального выпуска — задача нашего менеджера по выпускам. # Сначала соберите код.

$ mvn clean install  # вы можете пропустить тесты с помощью `-DskipTests=true`, чтобы сэкономить время

# Создайте двоичный дистрибутив.
$ cd storm-dist/binary && mvn package

Последняя команда создаст двоичные файлы Storm в следующих местах:

storm-dist/binary/target/apache-storm-<version>.pom
storm-dist/binary/target/apache-storm-<version>.tar.gz
storm-dist/binary/target/apache-storm-<version>.zip

включая соответствующие файлы цифровой подписи *.asc.

После выполнения команды mvn package вас могут попросить ввести ваши учетные данные GPG/PGP (один раз для каждого двоичного файла). Это происходит потому, что шаг пакетирования создает цифровые подписи *.asc для всех двоичных файлов, и в указанном выше процессе будет использоваться ваш личный ключ GPG для создания этих подписей.

Вы можете проверить, соответствуют ли цифровые подписи их соответствующим файлам:

# Пример: Проверьте подпись двоичного файла `.tar.gz`.
$ gpg --verify storm-dist/binary/target/apache-storm-<version>.tar.gz.asc

Наилучшие практики

Тестирование

Тесты никогда не должны зависеть от времени для прохождения. В Storm можно правильно протестировать функциональность, которая зависит от времени, путем имитации времени, что позволяет не беспокоиться о случайных задержках, которые могут случайно провалить тесты.Если вы тестируете топологии, которые не выполняют полное подтверждение кортежей, то следует использовать утилиты "отслеживаемых топологий" из backtype.storm.testing.clj. Например, test-acking (около строки 213) проверяет систему подтверждения кортежей в Storm с помощью отслеживаемых топологий. Здесь ключевой является функция tracked-wait: она вернет управление только тогда, когда столько кортежей было выпущено спутниками, и топология находится в состоянии покоя (то есть ни один кортеж больше не выпускается без дальнейшего входного сигнала). Обратите внимание, что отслеживаемые топологии не следует использовать для топологий, содержащих тик-кортежи.

Инструменты

Репозитории исходного кода (git)

Исходный код Storm управляется с помощью git. По ряду причин существует более одного репозитория git, связанного с Storm.* Только коммитеры: https://git-wip-us.apache.org/repos/asf/storm.git — это официальный и авторитетный репозиторий Git для Storm, управляемый в рамках зонтика Apache Software Foundation. Только официальные коммитеры Storm будут взаимодействовать с этим репозиторием. При первом пуше в этот репозиторий Git будет запрошен ваше имя пользователя и пароль. Используйте ваше имя пользователя и пароль Apache, то есть те учетные данные, которые вы настроили через https://id.apache.org/ после того, как были включены в качестве коммитера.

  • Все остальные: https://github.com/apache/storm/ — это читающееся зеркало официального репозитория Git. Если вы не являетесь коммитером Storm (большинство людей), это репозиторий, с которым вы должны работать. Увидеть Рабочий процесс разработки выше, чтобы узнать, как вы можете создать запрос на слияние, например.Автоматический бот (называемый ASF GitHub Bot в Storm JIRA) периодически выполняет слияние изменений из официального репозитория Apache в читающееся зеркало GitHub, а также выполняет слияние комментариев из запросов на слияние GitHub в Storm JIRA.

Отслеживание задач (JIRA)

Отслеживание задач включает такие задачи, как отчет о багах, запрос и сотрудничество над новыми функциями, а также административные действия по управлению выпусками. Как проект Apache мы используем JIRA в качестве нашего инструмента для отслеживания задач.

Storm JIRA доступна по адресу:

Если у вас еще нет аккаунта JIRA, вы можете создать его через ссылку выше (регистрация бесплатна).

Вопросы?

Если у вас есть вопросы после прочтения этого документа, пожалуйста, свяжитесь с нами через список рассылки разработчиков Storm.

И, конечно же, мы всегда приветствуем любые вклады для улучшения информации в этом документе!

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/forview-storm.git
git@api.gitlife.ru:oschina-mirror/forview-storm.git
oschina-mirror
forview-storm
forview-storm
master