Skip to Content
Guia do DesenvolvedorDesenvolvimentoVariáveis de CI e Release

Variáveis de CI e Release

Diversos parâmetros dos pipelines de CI e release são expostos como variáveis de repositório do GitHub Actions (o contexto vars.*) para que os operadores possam ajustá-los sem abrir um pull request. Esta página lista as variáveis que afetam a execução de testes em .github/workflows/ci.yml e .github/workflows/release.yml, junto com seus valores padrão e onde cada uma se aplica.

Definindo uma variável

Os mantenedores do repositório definem essas variáveis em Settings → Secrets and variables → Actions → Variables. Uma variável não definida (ou vazia) usa o fallback na expressão do workflow. O limite de workers se aplica apenas a runners reservados, mesmo quando sua variável está definida.

Os arquivos de workflow são a fonte da verdade para esses parâmetros, e as suites de teste fixam as expressões do workflow byte por byte: scripts/tests/package-scripts.test.js fixa a expressão compartilhada de limite de workers em release.yml (QWEN_CI_VITEST_MAX_WORKERS com a guarda ecs-qwen-), scripts/tests/no-ak-integration-ci.test.js fixa a expressão de limite de workers em ci.yml, e scripts/tests/release-workflow.test.js fixa as expressões de retry e timeout de workspace-test do release.yml. scripts/tests/package-scripts.test.js também verifica os valores padrão documentados e as localizações dos workflows em ambos os workflows. Como essa guarda é executada na lane de CI de perfil completo (test:scripts) e não nas verificações exclusivas de docs, verifique edições restritas a esta página localmente antes de abrir um pull request com npm run test:scripts (ou npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/package-scripts.test.js). Se as docs e os workflows divergirem, confie nos workflows e atualize esta página na mesma alteração.

Variáveis

VariávelPadrãoUsada emControla
QWEN_CI_VITEST_RETRY2ci.ymlContagem de retries para o step principal de teste de workspace e scripts do CI
QWEN_RELEASE_VITEST_RETRY2release.ymlContagem de retries para os shards de teste de workspace do release
QWEN_RELEASE_WORKSPACE_TIMEOUT_MINUTES45release.ymlTimeout do job de cada shard de teste de workspace do release
QWEN_CI_VITEST_MAX_WORKERS4ci.yml, release.ymlLimite de workers para testes unitários do CI principal e testes de workspace/quality do release em runners reservados

Contagens de retry

QWEN_CI_VITEST_RETRY e QWEN_RELEASE_VITEST_RETRY são passados ao Vitest como --retry=<n> no step principal de teste do CI (npm run test:ci:workspaces e npm run test:scripts) e na lane de release (npm run test:release:workspaces) respectivamente. As duas lanes têm variáveis separadas para que possam ser ajustadas independentemente.

O Vitest reexecuta testes que falharam dentro da mesma execução. Isso pode ajudar com contenção intermitente, mas uma falha que se recupera dentro do orçamento de retry torna o check verde e não é registrada como falha pelo rastreador de flaky-rerun. Mantenha o orçamento modesto em vez de usar retries para mascarar uma suite instável. Ambas as variáveis também aceitam o valor literal off, que omite inteiramente a flag --retry em vez de passar --retry=0 (um --retry=0 na linha de comando sobrepõe a configuração própria do Vitest do workspace e desabilitaria uma política de retry deliberada).

Timeout de teste de workspace

QWEN_RELEASE_WORKSPACE_TIMEOUT_MINUTES define o timeout-minutes no nível do job de cada um dos três shards de workspace_tests no pipeline de release. O timeout é dimensionado pelo nível de ocupação do host reservado e não pela suite em si, então aumente-o quando o host estiver com contenção em vez de assumir uma regressão de teste.

Limite de workers do Vitest em runners self-hosted

QWEN_CI_VITEST_MAX_WORKERS limita os processos do Vitest nos steps listados abaixo (VITEST_MAX_THREADS / VITEST_MAX_FORKS, com o mínimo correspondente forçado para 1) nos runners self-hosted reservados cujo nome começa com ecs-qwen-. A variável é exportada apenas pelo step principal de teste de workspace do CI e pelos steps workspace_tests e quality_scripts do release; outros testes de integração que executam o Vitest e caem no mesmo pool reservado nos workflows de CI e release não a consomem; eles usam seus próprios limites do Vitest. O smoke E2E da Web Shell está fixado em ubuntu-latest, então o limite não se aplica a ele. Em runners hospedados pelo GitHub, a variável é ignorada e o Vitest usa seus próprios valores padrão.

Variáveis relacionadas fora da execução de testes

release.yml também expõe QWEN_RELEASE_STATIC_TIMEOUT_MINUTES (padrão 60, controlando a lane de lint quality_static) e QWEN_RELEASE_BUILD_TIMEOUT_MINUTES (padrão 45, controlando a lane de empacotamento quality_build). Como elas governam lint estático e builds de artefatos em vez de execução de testes, estão fora do escopo de execução de testes desta página.

Last updated on