Коды выхода
Код выхода — это контракт между Velxio CI и вашей задачей. Он стабилен; скрипты могут на него полагаться.
| код | значение |
|---|---|
0 |
Passed. --expect-text совпал, сценарий завершился, или единственное, что требовалось, — скриншот, и он был сделан. |
1 |
Failed. Появился --fail-text, expect-pin не совпал, шаг завершился неудачей или гость упал. |
2 |
Config. Ошибка использования или линта, либо сервер отклонил запуск до его начала. Ничего не списано. |
3 |
Auth. Токен отсутствует, имеет неверный формат, неизвестен, отозван или истёк; либо тариф не даёт права на CI. |
4 |
Quota. Не осталось минут CI в этом месяце, или задач одновременно больше, чем допускает ваш тариф. Ничего не списано. |
5 |
Server or runner. Превышен лимит запросов, CI отключён, раннер не освободился вовремя, раннер потерян, движок завис, достигнут предел реального времени, сбой рендерера, разорванное соединение. |
42 |
The budget ran out. Бюджет смоделированного времени был исчерпан до того, как ожидание исполнилось. Измените его с помощью --timeout-exit-code. |
130 |
Ctrl-C. CLI отменяет запуск, ждёт до 5 с финального отчёта и завершается. |
--timeout-exit-code 0 превращает бюджет в обычное завершение — так вы
говорите «выполняй N смоделированных секунд и отдай мне serial»:
velxio-cli run --timeout 5000 --timeout-exit-code 0 --serial-log-file serial.log .Статус и причина
Заголовок раздела «Статус и причина»Последняя строка запуска называет и то, и другое:
FAIL (expect_pin_mismatch) in 0.60 s simulated (2.9 s wall) · billed 1 s · exit 1| статус | причины |
|---|---|
passed |
plan_complete, expect_text, screenshots_done |
failed |
fail_text, expect_pin_mismatch, pin_not_connected, pin_unknown, control_unknown, step_failed, screenshot_mismatch, guest_crash |
timeout |
budget_reached |
error |
engine_stalled, wall_cap, renderer_crash, page_load_failed, runner_lost, no_runner, server_error, load_failed |
cancelled |
user, client_disconnected |
lost |
heartbeat, api_restart |
screenshot_mismatch зарезервирован: сравнение скриншотов ещё не
реализовано, поэтому compare-with сегодня никогда не приводит к неудаче
запуска. См.
Сценарии.
С --json каждая строка — это объект, а последняя содержит всё:
{ "t": "end", "status": "failed", "reason": "expect_pin_mismatch", "exit_code": 1}В GitHub Actions те же значения приходят как выходные данные status и
sim_time_ms действия.
Почему запуск был отклонён (exit 2)
Заголовок раздела «Почему запуск был отклонён (exit 2)»Они возвращаются до того, как что-либо списано, каждое с offending-именем в сообщении:
| код | что исправить |
|---|---|
unknown_board_type |
плата не является типом Velxio или типом платы, известным CI. velxio-cli boards. |
board_not_supported_in_ci |
у Velxio пока нет CI-симуляции для этой платы; в сообщении указана фаза. См. таблицу плат. |
board_not_launched |
плата существует, но недоступна для запуска. |
unsupported_part |
компонент на схеме не может быть смоделирован; его идентификаторы перечислены. |
firmware_format_mismatch |
образ не для этого чипа — скажем, образ ESP32-C3 на плате esp32-s3. |
firmware_too_large, bundle_too_large, blob_missing, blob_sha_mismatch |
превышен лимит размера или загрузка пришла не целиком. |
scenario_invalid |
шаг неизвестен, либо поле отсутствует или неразбираемо. |
scenario_part_missing |
шаг называет part-id, которого нет в схеме. |
feature_unsupported |
что-то ещё не реализовано: language = "micropython", [[chip]], шаг касания. |
no_sim_clock |
у этой платы нет читаемых смоделированных часов, поэтому ничего нельзя было списать по смоделированному времени. |
too_many_parts, bad_request |
превышены лимиты схемы или запрос имеет неверный формат. |
Exit 4 — это quota_exhausted (в сообщении указана дата сброса) или
concurrency. Exit 5 — это rate_limited, ci_disabled или server_error.
Сначала запустите velxio-cli lint .: он локально отлавливает большинство
причин exit 2, без токена и без сети.
Сколько стоит каждое завершение
Заголовок раздела «Сколько стоит каждое завершение»Минуты — это смоделированное время, округлённое вверх до целых секунд и никогда не превышающее бюджет, зарезервированный запуском.
- Отклонено до начала (exit 2, 3, 4) — ничего. Запуск так и не достиг раннера.
- Ни один раннер не освободился вовремя, или соединение разорвалось до запуска прошивки — ничего.
- Passed, failed или timed out — истёкшие смоделированные секунды.
- Ошибка сервера или раннера во время запуска (exit 5) — только истёкшие смоделированные секунды, а не реальное время, которое заняла попытка.
- Ctrl-C — смоделированные секунды до отмены.
Ваш баланс и статус каждого запуска, смоделированное время, списанные секунды и код выхода — на velxio.dev/account/ci.