Переход с Wokwi CI
Velxio CI читает файлы, которые уже есть в проекте Wokwi CI: wokwi.toml,
diagram.json и YAML сценариев Wokwi. Код Wokwi не задействован;
эти форматы читают наши собственные парсеры. На практике миграция
занимает две строки.
- uses: wokwi/wokwi-ci-action@v1- uses: velxio/velxio-ci-action@v1 with: token: ${{ secrets.WOKWI_CLI_TOKEN }} token: ${{ secrets.VELXIO_CLI_TOKEN }} path: / timeout: 10000 expect_text: 'Hello, World!' fail_text: 'Error' scenario: 'test.scenario.yaml'Имена входных параметров action сохранены намеренно: path, timeout,
expect_text, fail_text, scenario, serial_log_file, diagram_file,
elf. Получите секрет командой velxio-cli login --ci --name "<repo>" (она
подтверждается в браузере и один раз выводит токен) и сохраните его как
секрет репозитория. Полный список в разделе GitHub Actions.
В командной строке
Заголовок раздела «В командной строке»Флаги wokwi-cli существуют под теми же именами: --elf,
--diagram-file, --scenario, --expect-text, --fail-text,
--timeout, --timeout-exit-code, --interactive, --serial-log-file,
--screenshot-part, --screenshot-time, --screenshot-file, --quiet.
--timeout в обоих случаях задаётся в моделируемых миллисекундах.
WOKWI_CLI_TOKEN никогда не читается. Задайте VELXIO_CLI_TOKEN (или
VELXIO_CI_TOKEN) либо один раз выполните velxio-cli login.
wokwi.toml
Заголовок раздела «wokwi.toml»Читается как есть: переименовывать его в velxio.toml не нужно:
[wokwi]version = 1firmware = "build/firmware.bin" # usedelf = "build/firmware.elf" # used when firmware is absent (AVR, RP2040)gdbServerPort = 3333 # warning: not supportedrfc2217ServerPort = 4000 # warning: not supportedvcdFile = "trace.vcd" # warning: not supported
[[net.forward]] # warning: CI runs have no networkfrom = "localhost:8080"to = "target:80"
[[chip]] # refused: custom chips do not run in CI yetname = "inverter"binary = "chips/inverter.chip.wasm"О неподдерживаемых ключах сообщается по имени. Это предупреждения, а не
молчаливое игнорирование, за исключением [[chip]], который останавливает
запуск, чтобы вы никогда не получили успех от схемы без испытываемого чипа.
В Velxio CI сегодня нет ни GDB-сервера, ни порта RFC2217, ни экспорта VCD,
ни перенаправления сети.
Ключи, которые добавляет Velxio - board, diagram, project, scenario,
flasher_args - находятся в секции [velxio]. См.
velxio.toml.
Типы компонентов Wokwi отображаются на виды Velxio. Сегодня работают следующие:
Тип в diagram.json Wokwi |
Вид Velxio |
|---|---|
wokwi-arduino-uno |
arduino-uno |
wokwi-arduino-nano |
arduino-nano |
wokwi-arduino-mega |
arduino-mega |
wokwi-attiny85 |
attiny85 |
wokwi-pi-pico, board-pi-pico, wokwi-raspberry-pi-pico |
raspberry-pi-pico |
board-pi-pico-w |
pi-pico-w (нет сети в CI: предупреждение) |
wokwi-esp32-devkit-v1, board-esp32-devkit-v1 |
esp32 |
board-esp32-s3-devkitc-1 |
esp32-s3 |
board-esp32-c3-devkitm-1 |
esp32-c3 |
board-esp32-c6-devkitc-1 |
esp32-c6 |
board-esp32-devkit-c-v4 |
esp32-devkit-c-v4 |
board-esp32-cam |
esp32-cam |
board-wemos-lolin32-lite |
wemos-lolin32-lite |
board-xiao-esp32-s3 |
xiao-esp32-s3 |
board-arduino-nano-esp32 |
arduino-nano-esp32 |
board-xiao-esp32-c3 |
xiao-esp32-c3 |
board-aitewinrobot-esp32c3-supermini |
aitewinrobot-esp32c3-supermini |
board-xiao-esp32-c6 |
xiao-esp32c6 |
board-esp32-p4-function-ev |
esp32-p4 |
board-velxio-<kind> |
любая плата, работающая в CI, записанная способом Velxio |
Velxio запускает в CI тридцать шесть плат, и большинство из них - платы, для
которых у Wokwi нет типа: семейство RP2350, платы XIAO на ARM, наборы M5Stack
и Seeed. Записывайте их как board-velxio-<kind>; полный список в
таблице плат.
Любая другая плата Wokwi завершается ошибкой ещё до начала запуска, с
board_not_supported_in_ci или unknown_board_type, с указанием типа и
фазы, на которой это планируется. Это касается board-pi-pico-2 и -2w,
плат STM32, Nucleo, плат ESP32-S2/H2/C61, предварительного devkit ESP32-P4
и наборов с дисплеем. Близкая плата Velxio предлагается только тогда, когда
она работает сегодня, и она никогда не подставляется за вас. За отказ
средства не списываются.
velxio-cli boards выводит актуальный список со статусом каждой платы.
Сценарии
Заголовок раздела «Сценарии»YAML сценариев Wokwi выполняется без изменений: delay, wait-serial,
write-serial, expect-pin, set-control, take-screenshot, с теми же
именами полей (part-id, save-to, compare-with, value). Всё время
моделируемое, как и в Wokwi. Два отличия:
- Шаги касаний (
touch-press,touch-move,touch-release) не реализованы; CLI отклоняет их на этапе lint. compare-withсохраняется, но пока не сравнивается: вы получаете PNG и предупреждение, и запуск из-за этого не завершается ошибкой.
Подробности в разделе Сценарии.
Прошивка
Заголовок раздела «Прошивка»CLI превращает то, что создала ваша цепочка инструментов, в то, что загружает движок платы:
- Папки Arduino ESP32 “Export compiled binary” работают:
<sketch>.ino.binобъединяется с<sketch>.ino.bootloader.binи<sketch>.ino.partitions.bin(плюсboot_app0.bin, если он есть). firmware.bin+bootloader.bin+partitions.binиз PlatformIO объединяются так же. Проекты ESP-IDF могут вместо этого указатьflasher_argsнаbuild/flasher_args.json.- Одиночный ESP32
app.binбез соседних файлов отклоняется, с подсказкой проesptool.py merge_bin. - Pico
.uf2и.elfразворачиваются в образ флеш-памяти; AVR.elfпревращается в Intel HEX. - Идентификатор чипа в загрузчике должен совпадать с платой: образ ESP32-C3
на плате
esp32-s3даётfirmware_format_mismatch, код выхода 2.
MicroPython не поддерживается: CI запускает скомпилированную прошивку, и
language = "micropython" отклоняется, а не запускается как что-то другое.
Минуты - это моделируемое время, округлённое вверх до целых секунд, за календарный месяц (UTC): 200 в месяц на Maker, 2 000 на Pro. Запуск, отклонённый до начала, ничего не стоит, а зависший движок или ограничение по реальному времени стоят только истёкших моделируемых секунд. Полная таблица в разделе Коды выхода.
Попробуйте на проекте, который у вас уже есть
Заголовок раздела «Попробуйте на проекте, который у вас уже есть»velxio-cli lint . # no token, no network: does Velxio understand this project?export VELXIO_CLI_TOKEN=vlxci_...velxio-cli run --scenario test.scenario.yaml --timeout 10000 .Если lint проходит чисто, запуск дойдёт до платы.