Переменные CI и релиза
Несколько параметров конвейеров CI и релиза доступны как переменные репозитория GitHub Actions (контекст vars.*), чтобы операторы могли настраивать их без создания pull request. На этой странице перечислены переменные, влияющие на выполнение тестов в .github/workflows/ci.yml и .github/workflows/release.yml, а также их значения по умолчанию и области применения.
Настройка переменной
Сопровождающие репозитория настраивают их в разделе Settings → Secrets and variables → Actions → Variables. Для неустановленной (или пустой) переменной используется фолбэк в выражении workflow. Лимит воркеров применяется только на зарезервированных runner’ах, даже если соответствующая переменная установлена.
Файлы workflow являются источником истины для этих параметров, а тестовые наборы фиксируют выражения workflow побайтно: scripts/tests/package-scripts.test.js фиксирует общее выражение лимита воркеров в release.yml (QWEN_CI_VITEST_MAX_WORKERS с защитой ecs-qwen-), scripts/tests/no-ak-integration-ci.test.js фиксирует выражение лимита воркеров в ci.yml, а scripts/tests/release-workflow.test.js фиксирует выражения таймаутов повторов и тестов workspace в release.yml. scripts/tests/package-scripts.test.js также проверяет задокументированные значения по умолчанию и расположение параметров в обоих workflow. Поскольку эта проверка выполняется в полной CI-ветке (test:scripts), а не только в проверках документации, проверяйте изменения, касающиеся этой страницы, локально перед созданием pull request с помощью npm run test:scripts (или npx vitest run --config ./scripts/tests/vitest.config.ts scripts/tests/package-scripts.test.js). Если документация и workflow когда-либо расходятся, руководствуйтесь workflow и обновите эту страницу в том же изменении.
Переменные
| Переменная | По умолчанию | Используется в | Управление |
|---|---|---|---|
QWEN_CI_VITEST_RETRY | 2 | ci.yml | Количество повторов для основного шага тестирования workspace и скриптов в CI |
QWEN_RELEASE_VITEST_RETRY | 2 | release.yml | Количество повторов для шардов тестов workspace при релизе |
QWEN_RELEASE_WORKSPACE_TIMEOUT_MINUTES | 45 | release.yml | Таймаут задания для каждого шарда тестов workspace при релизе |
QWEN_CI_VITEST_MAX_WORKERS | 4 | ci.yml, release.yml | Лимит воркеров для основных unit-тестов CI и тестов workspace/quality на зарезервированных runner’ах |
Счетчики повторов
QWEN_CI_VITEST_RETRY и QWEN_RELEASE_VITEST_RETRY передаются в Vitest как --retry=<n> в основном шаге тестирования CI (npm run test:ci:workspaces и npm run test:scripts) и в релизной ветке (npm run test:release:workspaces) соответственно. У двух веток разные переменные, чтобы их можно было настраивать независимо.
Vitest перезапускает упавшие тесты в рамках одного запуска. Это может помочь при периодической конкуренции за ресурсы, но если сбой устраняется в рамках бюджета повторов, проверка становится зелёной и не фиксируется трекером нестабильных перезапусков как сбой. Устанавливайте скромный бюджет, а не используйте повторы для маскировки нестабильного набора тестов. Обе переменные также принимают буквальное значение off, которое полностью опускает флаг --retry вместо передачи --retry=0 (командный флаг --retry=0 переопределяет собственную конфигурацию Vitest workspace и отключил бы преднамеренную политику повторов).
Таймаут тестов workspace
QWEN_RELEASE_WORKSPACE_TIMEOUT_MINUTES задаёт timeout-minutes на уровне задания для каждого из трёх шардов workspace_tests в конвейере релиза. Таймаут определяется загрузкой зарезервированного хоста, а не самого набора тестов, поэтому увеличивайте его при высокой загрузке хоста, а не предполагайте регрессию тестов.
Лимит воркеров Vitest на self-hosted runner’ах
QWEN_CI_VITEST_MAX_WORKERS ограничивает количество процессов Vitest в перечисленных ниже шагах (VITEST_MAX_THREADS / VITEST_MAX_FORKS, с минимальным значением, принудительно установленным в 1) на зарезервированных self-hosted runner’ах, чьи имена начинаются с ecs-qwen-. Переменная экспортируется только основным шагом тестирования workspace в CI и шагами workspace_tests и quality_scripts в релизе; другие интеграционные тесты, использующие Vitest и попадающие на тот же зарезервированный пул в workflow CI и релиза, не потребляют её — они используют собственные ограничения Vitest. Web-shell E2E smoke привязан к ubuntu-latest, поэтому лимит на него не распространяется. На runner’ах GitHub переменная игнорируется, и Vitest использует собственные значения по умолчанию.
Связанные переменные вне выполнения тестов
release.yml также предоставляет QWEN_RELEASE_STATIC_TIMEOUT_MINUTES (по умолчанию 60, управляет веткой статического линтинга quality_static) и QWEN_RELEASE_BUILD_TIMEOUT_MINUTES (по умолчанию 45, управляет веткой сборки артефактов quality_build). Поскольку они регулируют статический линтинг и сборку артефактов, а не выполнение тестов, они выходят за рамки выполнения тестов, описанных на этой странице.