Pipeline de CI
El CI se ejecuta en cada push a main y en cada pull request. Usa filtros de alcance inteligentes para omitir jobs costosos cuando solo cambiaron áreas no relacionadas.
Resumen de jobs
| Job | Propósito | Cuándo se ejecuta |
|---|---|---|
docs-scope | Detectar cambios solo en docs | Siempre |
changed-scope | Detectar qué áreas cambiaron (node/macos/android/windows) | Cambios fuera de docs |
check | Tipos TypeScript, lint, formato | Fuera de docs, cambios en node |
check-docs | Lint de Markdown + verificación de enlaces rotos | Docs modificados |
secrets | Detectar secretos filtrados | Siempre |
build-artifacts | Compilar dist una vez, compartir con release-check | Pushes a main, cambios en node |
release-check | Validar contenido de npm pack | Pushes a main tras build |
checks | Tests de Node + verificación de protocolo en PRs; compat Bun en push | Fuera de docs, cambios en node |
compat-node22 | Compatibilidad con el runtime mínimo soportado de Node | Pushes a main, cambios en node |
checks-windows | Tests específicos de Windows | Fuera de docs, cambios de windows |
macos | Lint/build/test de Swift + tests de TS | PRs con cambios en macos |
android | Build Gradle + tests | Fuera de docs, cambios en android |
Orden fail-fast
Los jobs se ordenan para que las verificaciones baratas fallen antes de ejecutar las costosas:
docs-scope+changed-scope+check+secrets(en paralelo, filtros baratos primero)- PRs:
checks(tests de Node en Linux divididos en 2 shards),checks-windows,macos,android - Pushes a
main:build-artifacts+release-check+ compat Bun +compat-node22
La lógica de alcance está en scripts/ci-changed-scope.mjs y tiene cobertura de tests unitarios en src/scripts/ci-changed-scope.test.ts.
Runners
| Runner | Jobs |
|---|---|
blacksmith-16vcpu-ubuntu-2404 | La mayoría de jobs en Linux, incluida detección de alcance |
blacksmith-32vcpu-windows-2025 | checks-windows |
macos-latest | macos, ios |
Equivalentes locales
pnpm check # tipos + lint + formato
pnpm test # tests de vitest
pnpm check:docs # formato de docs + lint + enlaces rotos
pnpm release:check # validar npm pack