Перейти к содержимому

Коды выхода

Код выхода — это контракт между 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 действия.

Они возвращаются до того, как что-либо списано, каждое с 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.