Pular para o conteúdo principal

Pipeline de CI

A CI é executada em todo push para main e em todo pull request. Ela usa escopo inteligente para pular jobs caros quando apenas áreas não relacionadas foram alteradas.

Visão geral dos jobs

JobFinalidadeQuando é executado
preflightDetectar alterações apenas em docs, escopos alterados, extensões alteradas e gerar o manifesto de CISempre em pushes e PRs que não sejam draft
security-fastDetecção de chaves privadas, auditoria de workflow via zizmor, auditoria de dependências de produçãoSempre em pushes e PRs que não sejam draft
build-artifactsGerar dist/ e a Control UI uma vez, enviar artifacts reutilizáveis para jobs downstreamAlterações relevantes para Node
checks-fast-coreLanes rápidas de correção no Linux, como checks de contratos de plugins incluídos/protocoloAlterações relevantes para Node
checks-fast-extensionsAgregar as lanes fragmentadas de extensões após checks-fast-extensions-shard ser concluídoAlterações relevantes para Node
extension-fastTestes focados apenas nos plugins incluídos alteradosQuando alterações em extensões são detectadas
checkGate local principal na CI: pnpm check mais pnpm build:strict-smokeAlterações relevantes para Node
check-additionalGuardas de arquitetura e limites mais o harness de regressão do watch do gatewayAlterações relevantes para Node
build-smokeTestes smoke da CLI compilada e smoke de memória na inicializaçãoAlterações relevantes para Node
checksLanes Linux Node mais pesadas: testes completos, testes de canais e compatibilidade Node 22 apenas em pushAlterações relevantes para Node
check-docsVerificações de formatação, lint e links quebrados na documentaçãoDocs alteradas
skills-pythonRuff + pytest para Skills com backend em PythonAlterações relevantes para Skills em Python
checks-windowsLanes de teste específicas do WindowsAlterações relevantes para Windows
macos-nodeLane de teste TypeScript no macOS usando os artifacts compilados compartilhadosAlterações relevantes para macOS
macos-swiftLint, build e testes em Swift para o app macOSAlterações relevantes para macOS
androidMatriz de build e testes do AndroidAlterações relevantes para Android

Ordem de fail-fast

Os jobs são ordenados para que checks baratos falhem antes de os mais caros serem executados:
  1. preflight decide quais lanes existem. A lógica docs-scope e changed-scope são etapas dentro deste job, não jobs independentes.
  2. security-fast, check, check-additional, check-docs e skills-python falham rapidamente sem esperar os jobs mais pesados de artifacts e matriz de plataformas.
  3. build-artifacts se sobrepõe às lanes rápidas de Linux para que consumidores downstream possam começar assim que o build compartilhado estiver pronto.
  4. Depois disso, as lanes mais pesadas de plataforma e runtime se expandem: checks-fast-core, checks-fast-extensions, extension-fast, checks, checks-windows, macos-node, macos-swift e android.
A lógica de escopo fica em scripts/ci-changed-scope.mjs e é coberta por testes unitários em src/scripts/ci-changed-scope.test.ts. O workflow separado install-smoke reutiliza o mesmo script de escopo por meio do seu próprio job preflight. Ele calcula run_install_smoke a partir do sinal mais restrito de smoke alterado, então o smoke de Docker/install só é executado para alterações relevantes de instalação, empacotamento e contêiner. Em pushes, a matriz checks adiciona a lane compat-node22, executada apenas em push. Em pull requests, essa lane é ignorada e a matriz permanece focada nas lanes normais de teste/canais.

Runners

RunnerJobs
blacksmith-16vcpu-ubuntu-2404preflight, security-fast, build-artifacts, checks Linux, checks de docs, Skills em Python, android
blacksmith-32vcpu-windows-2025checks-windows
macos-latestmacos-node, macos-swift

Equivalentes locais

pnpm check          # types + lint + format
pnpm build:strict-smoke
pnpm test:gateway:watch-regression
pnpm test           # testes vitest
pnpm test:channels
pnpm check:docs     # formatação + lint + links quebrados de docs
pnpm build          # gera dist quando as lanes de artifact/build-smoke da CI importam