Umstieg von Wokwi CI
Velxio CI liest die Dateien, die ein Wokwi-CI-Projekt bereits enthält: wokwi.toml,
diagram.json und Wokwis Szenario-YAML. Kein Code von Wokwi ist beteiligt;
unsere eigenen Parser lesen diese Formate. In der Praxis besteht die Migration aus zwei Zeilen.
- 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'Die Eingaben der Action behalten absichtlich ihre Namen: path, timeout,
expect_text, fail_text, scenario, serial_log_file, diagram_file,
elf. Das Secret erhältst du mit velxio-cli login --ci --name "<repo>" (es
wird im Browser bestätigt und gibt das Token einmalig aus) und speicherst es als
Repository-Secret. Die vollständige Liste findest du unter GitHub Actions.
Auf der Kommandozeile
Abschnitt betitelt „Auf der Kommandozeile“Die Flags von wokwi-cli existieren unter denselben Namen: --elf,
--diagram-file, --scenario, --expect-text, --fail-text,
--timeout, --timeout-exit-code, --interactive, --serial-log-file,
--screenshot-part, --screenshot-time, --screenshot-file, --quiet.
--timeout ist bei beiden in simulierten Millisekunden angegeben.
WOKWI_CLI_TOKEN wird nie gelesen. Setze VELXIO_CLI_TOKEN (oder
VELXIO_CI_TOKEN), oder führe einmal velxio-cli login aus.
wokwi.toml
Abschnitt betitelt „wokwi.toml“Wird unverändert gelesen - du musst sie nicht in velxio.toml umbenennen:
[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"Nicht unterstützte Schlüssel werden namentlich gemeldet. Es sind Warnungen, keine
stillschweigenden Auslassungen - außer [[chip]], was den Lauf abbricht, damit du niemals ein
Bestehen von einer Schaltung erhältst, in der der zu testende Chip fehlt. Es gibt heute keinen GDB-Server, keinen
RFC2217-Port, keinen VCD-Export und keine Netzwerkweiterleitung in Velxio CI.
Die Schlüssel, die Velxio hinzufügt - board, diagram, project, scenario,
flasher_args - befinden sich unter [velxio]. Siehe
velxio.toml.
Wokwi-Part-Typen werden auf Velxio-Kinds abgebildet. Diese laufen heute:
Wokwi diagram.json-Typ |
Velxio-Kind |
|---|---|
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 (kein Netzwerk in CI: Warnung) |
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> |
jedes Board, das CI ausführt, auf die Velxio-Art geschrieben |
Velxio führt sechsunddreißig Boards in CI aus, und die meisten davon sind Boards, für die Wokwi keinen
Typ hat: die RP2350-Familie, die XIAO-ARM-Boards, die M5Stack- und Seeed-
Kits. Schreibe diese als board-velxio-<kind>; die vollständige Liste findest du in der
Board-Tabelle.
Jedes andere Wokwi-Board schlägt fehl, bevor der Lauf beginnt, mit
board_not_supported_in_ci oder unknown_board_type, dem genannten Typ und der
Phase, in der es geplant ist. Das umfasst board-pi-pico-2 und -2w, die
STM32-Boards, die Nucleos, die ESP32-S2/H2/C61-Boards, das ESP32-P4-Preview-
Devkit und die Display-Kits. Ein nahegelegenes Velxio-Board wird nur vorgeschlagen, wenn es
heute läuft, und es wird niemals für dich ersetzt. Für eine
Ablehnung wird nichts berechnet.
velxio-cli boards gibt die aktuelle Liste mit dem Status jedes Boards aus.
Szenarien
Abschnitt betitelt „Szenarien“Wokwis Szenario-YAML läuft unverändert: delay, wait-serial,
write-serial, expect-pin, set-control, take-screenshot, mit denselben
Feldnamen (part-id, save-to, compare-with, value). Die gesamte Zeitsteuerung
ist simulierte Zeit, wie bei Wokwi. Zwei Unterschiede:
- Touch-Schritte (
touch-press,touch-move,touch-release) sind nicht implementiert; die CLI lehnt sie beim Linten ab. compare-withwird erfasst, aber noch nicht verglichen: Du erhältst das PNG und eine Warnung, und der Lauf schlägt deswegen nicht fehl.
Details unter Szenarien.
Firmware
Abschnitt betitelt „Firmware“Die CLI wandelt das, was deine Toolchain erzeugt hat, in das um, was die Engine des Boards lädt:
- Arduino-ESP32-Ordner “Export compiled binary” funktionieren:
<sketch>.ino.binwird mit<sketch>.ino.bootloader.binund<sketch>.ino.partitions.binzusammengeführt (plusboot_app0.bin, falls vorhanden). - PlatformIOs
firmware.bin+bootloader.bin+partitions.binwerden auf dieselbe Weise zusammengeführt. ESP-IDF-Projekte könnenflasher_argsstattdessen aufbuild/flasher_args.jsonverweisen. - Eine einzelne ESP32-
app.binohne Geschwisterdateien wird abgelehnt, mit dem Hinweis aufesptool.py merge_bin. - Pico
.uf2und.elfwerden zu einem Flash-Image abgeflacht; ein AVR-.elfwird zu Intel HEX. - Die Chip-ID des Bootloaders muss zum Board passen: Ein ESP32-C3-Image auf einem
esp32-s3-Board istfirmware_format_mismatch, Exit 2.
MicroPython wird nicht unterstützt: CI führt kompilierte Firmware aus, und
language = "micropython" wird abgelehnt, statt als etwas anderes ausgeführt zu werden.
Abrechnung
Abschnitt betitelt „Abrechnung“Minuten sind simulierte Zeit, auf ganze Sekunden aufgerundet, pro Kalendermonat (UTC): 200 pro Monat bei Maker, 2.000 bei Pro. Ein Lauf, der abgelehnt wird, bevor er beginnt, kostet nichts, und eine blockierte Engine oder eine Wall-Clock-Obergrenze kostet nur die simulierten Sekunden, die verstrichen sind. Siehe Exit-Codes für die vollständige Tabelle.
Probiere es mit einem Projekt aus, das du bereits hast
Abschnitt betitelt „Probiere es mit einem Projekt aus, das du bereits hast“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 .Wenn lint sauber ist, wird der Lauf ein Board erreichen.