Viniendo de Wokwi CI
Velxio CI lee los archivos que un proyecto de Wokwi CI ya tiene: wokwi.toml,
diagram.json y el YAML de escenarios de Wokwi. No interviene nada del código
de Wokwi; nuestros propios analizadores leen esos formatos. En la práctica, la
migración son dos líneas.
- 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'Las entradas de la action conservan sus nombres a propósito: path, timeout,
expect_text, fail_text, scenario, serial_log_file, diagram_file,
elf. Obtén el secreto con velxio-cli login --ci --name "<repo>" (se aprueba
en el navegador e imprime el token una sola vez) y guárdalo como secreto del
repositorio. La lista completa está en GitHub Actions.
En la línea de comandos
Sección titulada «En la línea de comandos»Los flags de wokwi-cli existen con los mismos nombres: --elf,
--diagram-file, --scenario, --expect-text, --fail-text,
--timeout, --timeout-exit-code, --interactive, --serial-log-file,
--screenshot-part, --screenshot-time, --screenshot-file, --quiet.
--timeout son milisegundos simulados en ambos.
WOKWI_CLI_TOKEN nunca se lee. Define VELXIO_CLI_TOKEN (o
VELXIO_CI_TOKEN), o ejecuta velxio-cli login una vez.
wokwi.toml
Sección titulada «wokwi.toml»Se lee tal cual: no tienes que renombrarlo a 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"Las claves que no son compatibles se reportan por su nombre. Son advertencias,
no omisiones silenciosas, excepto [[chip]], que detiene la ejecución para que
nunca obtengas un aprobado de un circuito al que le falta el chip bajo prueba.
Hoy no hay servidor GDB, ni puerto RFC2217, ni exportación VCD, ni reenvío de
red en Velxio CI.
Las claves que añade Velxio (board, diagram, project, scenario,
flasher_args) viven bajo [velxio]. Consulta
velxio.toml.
Los tipos de componente de Wokwi se corresponden con los kinds de Velxio. Hoy funcionan estos:
Tipo de diagram.json de Wokwi |
Kind de 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 (sin red en CI: advertencia) |
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> |
cualquier placa que CI ejecute, escrita a la manera de Velxio |
Velxio ejecuta treinta y seis placas en CI, y la mayoría son placas para las
que Wokwi no tiene tipo: la familia RP2350, las placas XIAO ARM, los kits de
M5Stack y Seeed. Escríbelas como board-velxio-<kind>; la lista completa está
en la tabla de placas.
Cualquier otra placa de Wokwi falla antes de que empiece la ejecución, con
board_not_supported_in_ci o unknown_board_type, el tipo nombrado y la fase
en la que está prevista. Eso incluye board-pi-pico-2 y -2w, las placas
STM32, las Nucleo, las placas ESP32-S2/H2/C61, el devkit de vista previa
ESP32-P4 y los kits con pantalla. Solo se sugiere una placa Velxio cercana
cuando funciona hoy, y nunca se sustituye por ti. Un rechazo no se factura.
velxio-cli boards imprime la lista en vivo con el estado de cada placa.
Escenarios
Sección titulada «Escenarios»El YAML de escenarios de Wokwi se ejecuta sin cambios: delay, wait-serial,
write-serial, expect-pin, set-control, take-screenshot, con los mismos
nombres de campo (part-id, save-to, compare-with, value). Toda la
temporización es tiempo simulado, como en Wokwi. Dos diferencias:
- Los pasos táctiles (
touch-press,touch-move,touch-release) no están implementados; la CLI los rechaza en el momento del lint. compare-withse captura pero aún no se compara: obtienes el PNG y una advertencia, y la ejecución no falla por ello.
Los detalles están en Escenarios.
Firmware
Sección titulada «Firmware»La CLI convierte lo que produjo tu toolchain en lo que carga el motor de la placa:
- Las carpetas “Export compiled binary” de Arduino ESP32 funcionan:
<sketch>.ino.binse fusiona con<sketch>.ino.bootloader.biny<sketch>.ino.partitions.bin(másboot_app0.bincuando está presente). firmware.bin+bootloader.bin+partitions.binde PlatformIO se fusionan de la misma manera. Los proyectos ESP-IDF pueden apuntarflasher_argsabuild/flasher_args.jsonen su lugar.- Un
app.binde ESP32 solitario, sin archivos hermanos, se rechaza, con la sugerencia deesptool.py merge_bin. - Los
.uf2y.elfde Pico se aplanan a una imagen de flash; un.elfde AVR se convierte en Intel HEX. - El chip id del bootloader debe coincidir con la placa: una imagen de ESP32-C3
en una placa
esp32-s3esfirmware_format_mismatch, salida 2.
MicroPython no es compatible: las ejecuciones de CI usan firmware compilado, y
language = "micropython" se rechaza en lugar de ejecutarse como otra cosa.
Facturación
Sección titulada «Facturación»Los minutos son tiempo simulado, redondeados hacia arriba a segundos enteros, por mes natural (UTC): 200 al mes en Maker, 2.000 en Pro. Una ejecución que se rechaza antes de empezar no cuesta nada, y un motor bloqueado o un límite de tiempo real solo cuestan los segundos simulados que habían transcurrido. Consulta Códigos de salida para la tabla completa.
Pruébalo en un proyecto que ya tengas
Sección titulada «Pruébalo en un proyecto que ya tengas»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 .Si lint no da problemas, la ejecución llegará a una placa.