Участие в разработке
Настройка
Внесите одно небольшое изменение в нужном месте и отправьте его пул-реквестом.
Перед началом
Ссылка на «Перед началом»- Сначала откройте issue или оставьте комментарий в уже существующем. Напишите, что вы хотите изменить и зачем.
- Дождитесь ответа, чтобы не делать то, что не будет принято.
- Пройдите Настройку, чтобы вы могли собрать и запустить HolyArrs.
Вопросы задавайте в Discord. Идеи пишите в r/HolyArrs. Issues — для ошибок и дорожной карты.
Отправьте первый пул-реквест
Ссылка на «Отправьте первый пул-реквест»-
Найдите модуль, к которому относится ваше изменение. Имена в разделе Модули совпадают с именами папок, так что неверное оповещение в Discord — это изменение в
alerts. -
Внесите изменение в
app/backend/internal/<module>/иapp/frontend/src/lib/<module>/. Ограничьтесь одним исправлением или одной функцией. -
Соберите веб-приложение, затем программу и проверьте изменение в браузере. См. Настройку.
-
Запустите проверки из раздела Тестирование.
Ни одна проверка не должна упасть.
-
Если вы изменили страницу, запустите её сквозной проект, например
npm --prefix app/frontend run e2e -- --project=movies. -
Откройте пул-реквест. Дайте ссылку на issue, напишите, что изменилось и как вы это проверили, и добавьте или обновите тесты для изменения.
-
При первом пул-реквесте бот попросит вас подписать лицензионное соглашение участника. Ответьте одним предложением, которое он попросит.
Варианты выбора
Ссылка на «Варианты выбора»Куда идёт изменение
Ссылка на «Куда идёт изменение»| Изменение | Куда идти |
|---|---|
| Новый маршрут | Модули |
| Новый модуль | Модули. Сначала откройте 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, станьте спонсором или угостите меня кофе.