Pipeline de CI
A CI é executada em todo push paramain 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
| Job | Finalidade | Quando é executado |
|---|---|---|
preflight | Detectar alterações apenas em docs, escopos alterados, extensões alteradas e gerar o manifesto de CI | Sempre em pushes e PRs que não sejam draft |
security-fast | Detecção de chaves privadas, auditoria de workflow via zizmor, auditoria de dependências de produção | Sempre em pushes e PRs que não sejam draft |
build-artifacts | Gerar dist/ e a Control UI uma vez, enviar artifacts reutilizáveis para jobs downstream | Alterações relevantes para Node |
checks-fast-core | Lanes rápidas de correção no Linux, como checks de contratos de plugins incluídos/protocolo | Alterações relevantes para Node |
checks-fast-extensions | Agregar as lanes fragmentadas de extensões após checks-fast-extensions-shard ser concluído | Alterações relevantes para Node |
extension-fast | Testes focados apenas nos plugins incluídos alterados | Quando alterações em extensões são detectadas |
check | Gate local principal na CI: pnpm check mais pnpm build:strict-smoke | Alterações relevantes para Node |
check-additional | Guardas de arquitetura e limites mais o harness de regressão do watch do gateway | Alterações relevantes para Node |
build-smoke | Testes smoke da CLI compilada e smoke de memória na inicialização | Alterações relevantes para Node |
checks | Lanes Linux Node mais pesadas: testes completos, testes de canais e compatibilidade Node 22 apenas em push | Alterações relevantes para Node |
check-docs | Verificações de formatação, lint e links quebrados na documentação | Docs alteradas |
skills-python | Ruff + pytest para Skills com backend em Python | Alterações relevantes para Skills em Python |
checks-windows | Lanes de teste específicas do Windows | Alterações relevantes para Windows |
macos-node | Lane de teste TypeScript no macOS usando os artifacts compilados compartilhados | Alterações relevantes para macOS |
macos-swift | Lint, build e testes em Swift para o app macOS | Alterações relevantes para macOS |
android | Matriz de build e testes do Android | Alteraçõ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:preflightdecide quais lanes existem. A lógicadocs-scopeechanged-scopesão etapas dentro deste job, não jobs independentes.security-fast,check,check-additional,check-docseskills-pythonfalham rapidamente sem esperar os jobs mais pesados de artifacts e matriz de plataformas.build-artifactsse sobrepõe às lanes rápidas de Linux para que consumidores downstream possam começar assim que o build compartilhado estiver pronto.- 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-swifteandroid.
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
| Runner | Jobs |
|---|---|
blacksmith-16vcpu-ubuntu-2404 | preflight, security-fast, build-artifacts, checks Linux, checks de docs, Skills em Python, android |
blacksmith-32vcpu-windows-2025 | checks-windows |
macos-latest | macos-node, macos-swift |