Aller au contenu

Venir de Wokwi CI

Velxio CI lit les fichiers qu’un projet Wokwi CI possède déjà : wokwi.toml, diagram.json et le YAML de scénario de Wokwi. Aucun code de Wokwi n’est impliqué ; nos propres analyseurs lisent ces formats. En pratique, la migration se fait en deux lignes.

- 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'

Les entrées de l’action conservent leurs noms à dessein : path, timeout, expect_text, fail_text, scenario, serial_log_file, diagram_file, elf. Obtenez le secret avec velxio-cli login --ci --name "<repo>" (il s’approuve dans le navigateur et affiche le jeton une seule fois) puis enregistrez-le comme secret de dépôt. Liste complète dans GitHub Actions.

Les options de wokwi-cli existent sous les mêmes noms : --elf, --diagram-file, --scenario, --expect-text, --fail-text, --timeout, --timeout-exit-code, --interactive, --serial-log-file, --screenshot-part, --screenshot-time, --screenshot-file, --quiet. --timeout est en millisecondes simulées dans les deux cas.

WOKWI_CLI_TOKEN n’est jamais lu. Définissez VELXIO_CLI_TOKEN (ou VELXIO_CI_TOKEN), ou lancez velxio-cli login une fois.

Lu tel quel : vous n’avez pas à le renommer en velxio.toml :

[wokwi]
version = 1
firmware = "build/firmware.bin" # used
elf = "build/firmware.elf" # used when firmware is absent (AVR, RP2040)
gdbServerPort = 3333 # warning: not supported
rfc2217ServerPort = 4000 # warning: not supported
vcdFile = "trace.vcd" # warning: not supported
[[net.forward]] # warning: CI runs have no network
from = "localhost:8080"
to = "target:80"
[[chip]] # refused: custom chips do not run in CI yet
name = "inverter"
binary = "chips/inverter.chip.wasm"

Les clés non prises en charge sont signalées par leur nom. Ce sont des avertissements, pas des omissions silencieuses, sauf [[chip]], qui arrête l’exécution pour que vous n’obteniez jamais un succès à partir d’un circuit auquel manque la puce testée. Il n’y a aujourd’hui ni serveur GDB, ni port RFC2217, ni export VCD, ni redirection réseau dans Velxio CI.

Les clés que Velxio ajoute (board, diagram, project, scenario, flasher_args) se trouvent sous [velxio]. Voir velxio.toml.

Les types de composants Wokwi correspondent à des kinds Velxio. Ceux-ci fonctionnent aujourd’hui :

Type diagram.json 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 (pas de réseau en CI : avertissement)
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> toute carte exécutée en CI, écrite à la manière Velxio

Velxio exécute trente-six cartes en CI, et la plupart sont des cartes pour lesquelles Wokwi n’a pas de type : la famille RP2350, les cartes XIAO ARM, les kits M5Stack et Seeed. Écrivez celles-ci sous la forme board-velxio-<kind> ; la liste complète se trouve dans le tableau des cartes.

Toute autre carte Wokwi échoue avant le début de l’exécution, avec board_not_supported_in_ci ou unknown_board_type, le type nommé, et la phase où cela est prévu. Cela inclut board-pi-pico-2 et -2w, les cartes STM32, les Nucleos, les cartes ESP32-S2/H2/C61, le kit de développement ESP32-P4 preview et les kits à écran. Une carte Velxio proche n’est suggérée que lorsqu’elle fonctionne aujourd’hui, et elle n’est jamais substituée à votre place. Rien n’est facturé pour un refus.

velxio-cli boards affiche la liste à jour avec le statut de chaque carte.

Le YAML de scénario de Wokwi s’exécute sans modification : delay, wait-serial, write-serial, expect-pin, set-control, take-screenshot, avec les mêmes noms de champs (part-id, save-to, compare-with, value). Tout le timing est du temps simulé, comme sur Wokwi. Deux différences :

  • Les étapes tactiles (touch-press, touch-move, touch-release) ne sont pas implémentées ; la CLI les refuse au moment du lint.
  • compare-with est capturé mais pas comparé pour l’instant : vous obtenez le PNG et un avertissement, et l’exécution n’échoue pas pour autant.

Détails dans Scénarios.

La CLI transforme ce que votre chaîne d’outils a produit en ce que le moteur de la carte charge :

  • Les dossiers Arduino ESP32 « Export compiled binary » fonctionnent : <sketch>.ino.bin est fusionné avec <sketch>.ino.bootloader.bin et <sketch>.ino.partitions.bin (plus boot_app0.bin lorsqu’il est présent).
  • Les firmware.bin + bootloader.bin + partitions.bin de PlatformIO fusionnent de la même manière. Les projets ESP-IDF peuvent pointer flasher_args vers build/flasher_args.json à la place.
  • Un app.bin ESP32 seul, sans fichiers frères, est refusé, avec l’indication esptool.py merge_bin.
  • Les .uf2 et .elf Pico sont aplatis en une image flash ; un .elf AVR devient de l’Intel HEX.
  • L’identifiant de puce du bootloader doit correspondre à la carte : une image ESP32-C3 sur une carte esp32-s3 donne firmware_format_mismatch, code de sortie 2.

MicroPython n’est pas pris en charge : la CI exécute du firmware compilé, et language = "micropython" est refusé plutôt qu’exécuté comme autre chose.

Les minutes sont du temps simulé, arrondi à la seconde supérieure, par mois calendaire (UTC) : 200 par mois en Maker, 2 000 en Pro. Une exécution refusée avant son démarrage ne coûte rien, et un moteur bloqué ou un plafond de temps réel ne coûte que les secondes simulées écoulées. Voir Codes de sortie pour le tableau complet.

Fenêtre de terminal
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 ne signale rien, l’exécution atteindra une carte.