Перейти к содержимому

Участие в разработке

Настройка

Внесите одно небольшое изменение в нужном месте и отправьте его пул-реквестом.

  • Сначала откройте issue или оставьте комментарий в уже существующем. Напишите, что вы хотите изменить и зачем.
  • Дождитесь ответа, чтобы не делать то, что не будет принято.
  • Пройдите Настройку, чтобы вы могли собрать и запустить HolyArrs.

Вопросы задавайте в Discord. Идеи пишите в r/HolyArrs. Issues — для ошибок и дорожной карты.

Отправьте первый пул-реквест

Ссылка на «Отправьте первый пул-реквест»
  1. Найдите модуль, к которому относится ваше изменение. Имена в разделе Модули совпадают с именами папок, так что неверное оповещение в Discord — это изменение в alerts.

  2. Внесите изменение в app/backend/internal/<module>/ и app/frontend/src/lib/<module>/. Ограничьтесь одним исправлением или одной функцией.

  3. Соберите веб-приложение, затем программу и проверьте изменение в браузере. См. Настройку.

  4. Запустите проверки из раздела Тестирование.

    Ни одна проверка не должна упасть.

  5. Если вы изменили страницу, запустите её сквозной проект, например npm --prefix app/frontend run e2e -- --project=movies.

  6. Откройте пул-реквест. Дайте ссылку на issue, напишите, что изменилось и как вы это проверили, и добавьте или обновите тесты для изменения.

  7. При первом пул-реквесте бот попросит вас подписать лицензионное соглашение участника. Ответьте одним предложением, которое он попросит.

Изменение Куда идти
Новый маршрут Модули
Новый модуль Модули. Сначала откройте issue
Придержанная функция Настройка
Выпуск версии Выпуск версий. Только для мейнтейнеров

Как выглядит хороший пул-реквест

Ссылка на «Как выглядит хороший пул-реквест»
  • Пишите комментарии, которые объясняют, почему код делает то, что делает. Никаких номеров из дорожной карты, дат, имён и длинных тире в комментариях.
  • Не трогайте формулировки в приложении, если issue не о формулировках.
  • Оставляйте выпущенные пути API, имена полей, ключи настроек, имена таблиц и имена заданий как есть. Добавляйте, но никогда не переименовывайте.

Признак проблемы. Падает проверка структуры. Причина. В сообщении названы файл и правило. Решение. Перенесите код или передайте простые данные из верхнего модуля. См. Модули.

Признак проблемы. Веб-приложение выглядит старым. Причина. Программа отдаёт ту сборку, которую в неё встроили. Решение. Заново соберите веб-приложение, а потом программу.

Признак проблемы. Сквозные тесты не запускаются. Причина. Не установлен тестовый браузер. Решение. Выполните npx --prefix app/frontend playwright install chromium.

Правила, которые пул-реквест должен соблюдать
  • Модуль общается с другим модулем только через его сервис (Go) или его index.ts (веб). Никогда через его store или его файлы.
  • SQL есть только в файлах store*.go модуля, для собственных таблиц этого модуля.
  • Веб-часть попадает в lib/ui, только когда ею пользуются 2 модуля или больше.
  • Никаких пакетов util, common, shared или helpers.
  • Каждый внешний вызов идёт через core/outbound.

Эти правила проверяются тестами, поэтому неверный импорт роняет сборку. Полный список и имена проверок есть в разделе Модули.

Что запускает CI
Задание Что запускает
Web check, lint, test, build и набор сквозных тестов
Go go build, go vet и go test -timeout 60m ./... на amd64 и arm64, нативно и под эмуляцией
Race go test -race ./...
Contract Совпадение с openapi.json, проверки области доступа на каждом маршруте, набор тестов загрузчиков
Fault and scale Прогоны со сбоями, медленной записью, неисправным внешним сервисом и прогоны по памяти
Image Образ для разработки собирается, запускается и сообщает свою версию

Подробности о долгих прогонах есть в разделе Тестирование.

HolyArrs бесплатен. Если он сэкономил вам время, поставьте звезду на GitHub, станьте спонсором или угостите меня кофе.