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

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 + тесты TSPR с изменениями для macOS
androidСборка Gradle + тестыИзменения, не связанные с документацией, изменения для Android

Порядок Fail-Fast

Задачи упорядочены так, чтобы быстрые проверки завершались с ошибкой до запуска ресурсоемких:

  1. docs-scope + code-analysis + check (параллельно, ~1-2 мин)
  2. build-artifacts (ждет завершения предыдущих)
  3. 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-2025checks-windows
macos-latestmacos, ios

Локальные эквиваленты

pnpm check          # типы + линтинг + форматирование
pnpm test           # vitest тесты
pnpm check:docs     # форматирование + линтинг документации + битые ссылки
pnpm release:check  # валидация npm-пакета

Процесс разработки PiХабы документации