Обзор
Чтобы создать надёжное расширение для Discourse, имеет смысл включить непрерывную интеграцию (CI) в ваш плагин или компонент темы. Это поможет выявлять ошибки на ранней стадии и снизит вероятность появления ошибок в вашем коде.
Настройка рабочего процесса CI с помощью GitHub Actions для автоматизации сборки и тестирования — это подход, который команда Discourse использует для всех наших компонентов, и мы рекомендуем вам поступать так же.
Настройка
Чтобы добавить автоматизированные рабочие процессы для GitHub Actions, вам нужно создать папку .github/workflows в корневом каталоге вашего репозитория.
Внутри папки workflows вы можете определить набор автоматизаций, которые должны выполнять GitHub Actions. Например, это могут быть файлы .yml для линтинга и тестов.
Мы создали шаблоны рабочих процессов как для плагинов, так и для компонентов тем, которые вы можете использовать. Они связаны с нашими определениями «переиспользуемых рабочих процессов» здесь.
В репозитории-шаблоне на GitHub вы можете нажать кнопку Использовать этот шаблон, чтобы создать репозиторий плагина/компонента темы на основе шаблона.
В качестве альтернативы, если у вас уже есть проект, к которому вы хотите добавить рабочие процессы, просто скопируйте соответствующий рабочий процесс в папку .github/workflows/ вашего репозитория:
Плагины: discourse-plugin.yml
Темы и компоненты тем: discourse-theme.yml
Эти шаблоны привязаны к конкретной основной версии наших переиспользуемых рабочих процессов. Небольшие улучшения, которые мы вносим в рабочие процессы, будут автоматически применяться в вашей теме/плагине. Для разрушающих изменений (например, введения нового линтера) мы будем повышать основную версию переиспользуемых рабочих процессов, и вам потребуется обновить ваш рабочий процесс, чтобы он указывал на новую версию.
Готово! Всё настроено! Просто создайте коммит или PR в вашем репозитории, и GitHub Actions автоматически обнаружит рабочие процессы и начнет выполнение задач.
GitHub Actions покажет подробную информацию о каждом тесте, а после выполнения укажет
или
в зависимости от того, пройден тест или нет.
Если тест завершился с ошибкой, нажатие на детали предоставит вам некоторую информацию о том, что именно не сработало, что может дать подсказки о том, что не так с вашим кодом и что нужно исправить.
Добавьте свои собственные тесты
Чтобы тесты для плагинов и компонентов работали эффективно, важно, чтобы вы писали тесты для вашего плагина или компонента темы.
Подробнее о том, как писать тесты фронтенда с помощью EmberJS, см.:
- Write acceptance tests and component tests for Ember code in Discourse
- Introduction - Testing - Ember Guides
Для получения дополнительной информации о написании тестов RSpec с использованием Rails см.:
Примеры
В вашей пользу мы отобрали несколько примеров плагинов и компонентов тем, в которых интегрировано надежное тестирование:
| Плагин / Компонент | Тесты на стороне клиента | Тесты на стороне сервера |
|---|---|---|
| Assign | ||
| Calendar | ||
| Reactions | ||
| Right Sidebar Blocks | ||
| Tag Icons | ||
| Table Builder |
Этот документ управляется системой контроля версий — предложите изменения на github.
