Arrivare da Wokwi CI
Velxio CI legge i file che un progetto Wokwi CI ha già: wokwi.toml,
diagram.json e lo scenario YAML di Wokwi. Nessuna parte del codice di Wokwi
è coinvolta; i nostri parser leggono quei formati. In pratica la migrazione
sono due righe.
- 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'Gli input dell’action mantengono di proposito gli stessi nomi: path,
timeout, expect_text, fail_text, scenario, serial_log_file,
diagram_file, elf. Ottieni il secret con
velxio-cli login --ci --name "<repo>" (approva nel browser e stampa il
token una sola volta) e salvalo come secret del repository. L’elenco completo
è in GitHub Actions.
Sulla riga di comando
Sezione intitolata “Sulla riga di comando”I flag di wokwi-cli esistono con gli stessi nomi: --elf,
--diagram-file, --scenario, --expect-text, --fail-text,
--timeout, --timeout-exit-code, --interactive, --serial-log-file,
--screenshot-part, --screenshot-time, --screenshot-file, --quiet.
--timeout è in millisecondi simulati in entrambi.
WOKWI_CLI_TOKEN non viene mai letto. Imposta VELXIO_CLI_TOKEN (o
VELXIO_CI_TOKEN), oppure esegui velxio-cli login una volta.
wokwi.toml
Sezione intitolata “wokwi.toml”Letto così com’è: non devi rinominarlo in 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"Le chiavi non supportate vengono segnalate per nome. Sono avvisi, non
omissioni silenziose, tranne [[chip]], che interrompe l’esecuzione così non
ottieni mai un esito positivo da un circuito a cui manca il chip in test. Al
giorno d’oggi in Velxio CI non c’è nessun server GDB, nessuna porta RFC2217,
nessuna esportazione VCD e nessun inoltro di rete.
Le chiavi che Velxio aggiunge - board, diagram, project, scenario,
flasher_args - si trovano sotto [velxio]. Vedi
velxio.toml.
I tipi di parte Wokwi corrispondono ai kind di Velxio. Questi funzionano oggi:
Tipo in diagram.json di Wokwi |
Kind 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 (no network in CI: warning) |
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> |
qualsiasi board eseguita in CI, scritta alla maniera di Velxio |
Velxio esegue trentasei board in CI, e la maggior parte sono board per cui
Wokwi non ha un tipo: la famiglia RP2350, le board XIAO ARM, i kit M5Stack e
Seeed. Scrivi quelle come board-velxio-<kind>; l’elenco completo è nella
tabella delle board.
Ogni altra board Wokwi fallisce prima che l’esecuzione inizi, con
board_not_supported_in_ci o unknown_board_type, il tipo indicato per nome
e la fase in cui è pianificata. Questo include board-pi-pico-2 e -2w, le
board STM32, le Nucleo, le board ESP32-S2/H2/C61, il devkit di anteprima
ESP32-P4 e i kit con display. Una board Velxio vicina viene suggerita solo se
funziona oggi, e non viene mai sostituita al posto tuo. Per un rifiuto non
viene addebitato nulla.
velxio-cli boards stampa l’elenco aggiornato con lo stato di ogni board.
Scenari
Sezione intitolata “Scenari”Lo scenario YAML di Wokwi viene eseguito senza modifiche: delay,
wait-serial, write-serial, expect-pin, set-control,
take-screenshot, con gli stessi nomi di campo (part-id, save-to,
compare-with, value). Tutti i tempi sono tempo simulato, come su Wokwi.
Due differenze:
- Gli step touch (
touch-press,touch-move,touch-release) non sono implementati; la CLI li rifiuta in fase di lint. compare-withviene acquisito ma non ancora confrontato: ottieni il PNG e un avviso, e l’esecuzione non fallisce per questo.
Dettagli in Scenari.
Firmware
Sezione intitolata “Firmware”La CLI trasforma ciò che ha prodotto la tua toolchain in ciò che carica il motore della board:
- Le cartelle “Export compiled binary” di Arduino ESP32 funzionano:
<sketch>.ino.binviene unito a<sketch>.ino.bootloader.bine<sketch>.ino.partitions.bin(piùboot_app0.binquando presente). firmware.bin+bootloader.bin+partitions.bindi PlatformIO si uniscono allo stesso modo. I progetti ESP-IDF possono puntareflasher_argsabuild/flasher_args.json.- Un singolo
app.binESP32 senza file affiancati viene rifiutato, con il suggerimentoesptool.py merge_bin. - I
.uf2e.elfdel Pico vengono appiattiti in un’immagine flash; un.elfAVR diventa Intel HEX. - Il chip id del bootloader deve corrispondere alla board: un’immagine
ESP32-C3 su una board
esp32-s3èfirmware_format_mismatch, uscita 2.
MicroPython non è supportato: la CI esegue firmware compilato, e
language = "micropython" viene rifiutato invece di essere eseguito come
qualcos’altro.
Fatturazione
Sezione intitolata “Fatturazione”I minuti sono tempo simulato, arrotondati per eccesso al secondo intero, per mese di calendario (UTC): 200 al mese su Maker, 2.000 su Pro. Un’esecuzione rifiutata prima di iniziare non costa nulla, e un motore bloccato o un limite di tempo reale costano solo i secondi simulati trascorsi. Vedi Codici di uscita per la tabella completa.
Provalo su un progetto che hai già
Sezione intitolata “Provalo su un progetto che hai già”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 .Se lint è pulito, l’esecuzione raggiungerà una board.