Внесение вклада
CI-пайплайн
CI запускается при каждом пуше в ветку main и при каждом создании pull request. Он использует интеллектуальное определение области изменений, чтобы пропускать ресурсоемкие задачи, если изменилась только документация или нативный код.
Обзор задач
| Задача | Назначение | Когда запускается |
|---|---|---|
docs-scope | Обнаруживает изменения только в документации | Всегда |
changed-scope | Определяет, какие области изменились (node/macos/android/windows) | PR, не связанные с документацией |
check | Проверка типов TypeScript, линтинг, форматирование | Пуш в main или PR с изменениями, затрагивающими Node |
check-docs | Линтинг Markdown + проверка на битые ссылки | При изменении документации |
code-analysis | Проверка порога количества строк кода (1000 строк) | Только для PR |
secrets | Обнаружение утечки секретов | Всегда |
build-artifacts | Сборка дистрибутива один раз для использования другими задачами | Изменения, не связанные с документацией, изменения в Node |
release-check | Валидация содержимого npm-пакета | После сборки |
checks | Тесты Node/Bun + проверка протокола | Изменения, не связанные с документацией, изменения в Node |
checks-windows | Тесты, специфичные для Windows | Изменения, не связанные с документацией, затрагивающие Windows |
macos | Линтинг/сборка/тесты Swift + тесты TS | PR с изменениями для macOS |
android | Сборка Gradle + тесты | Изменения, не связанные с документацией, изменения для Android |
Порядок Fail-Fast
Задачи упорядочены так, чтобы быстрые проверки завершались с ошибкой до запуска ресурсоемких:
docs-scope+code-analysis+check(параллельно, ~1-2 мин)build-artifacts(ждет завершения предыдущих)checks,checks-windows,macos,android(ждут завершения сборки)
Логика определения области изменений находится в scripts/ci-changed-scope.mjs и покрыта модульными тестами в src/scripts/ci-changed-scope.test.ts.
Раннеры
| Раннер | Задачи |
|---|---|
blacksmith-16vcpu-ubuntu-2404 | Большинство Linux-задач, включая определение области изменений |
blacksmith-32vcpu-windows-2025 | checks-windows |
macos-latest | macos, ios |
Локальные эквиваленты
pnpm check # типы + линтинг + форматирование
pnpm test # vitest тесты
pnpm check:docs # форматирование + линтинг документации + битые ссылки
pnpm release:check # валидация npm-пакета