跳转到内容

Velxio CI

Velxio CI 让你在浏览器之外,通过我们的模拟器运行你的项目:你的终端、一个 GitHub Actions 任务,或任何能运行二进制文件的 CI。开发板会启动你真实编译出的固件,串口输出会流式返回,而当你所期望的事情没有发生时,命令会以非零状态退出。

终端窗口
curl -fsSL https://velxio.dev/ci/install.sh | sh
velxio-cli login # approve in the browser, once
cd firmware/blink
velxio-cli run --expect-text "Hello, world!" --timeout 10000 .
velxio-cli 0.2.1 · plan pro · 1998.3 of 2000 min left (resets 2026-10-01)
project blink (esp32-s3, 4 parts) · firmware build/blink.bin (ESP32 image, 912 KB)
run r_9f3c2a1b7e4d queued · budget 10.0 s simulated
Hello, world!
ok wait-serial "Hello, world!" at 0.412 s
PASS in 0.41 s simulated (3.2 s wall) · billed 1 s · exit 0
  • 在硬件之前捕获固件回归。 一个启动二进制文件并等待一行串口输出的测试只需一条命令;一个按下按钮、设置传感器并检查引脚的测试则是一个简短的 YAML 文件。
  • 测试你无法一直放在桌面上的东西。 Velxio 模拟的每一块开发板都可供每个任务并行使用,无需实验室,也无需烧录。
  • 沿用你现有的工具链。 在前面的步骤中用 arduino-cli、ESP-IDF、PlatformIO 或 cargo 进行编译;Velxio 只运行编译产物。

CI 按模拟分钟计费:即客户固件所认为已经过去的时间,而不是我们的服务器实际花费的时间。一个 10 秒的测试在每块开发板上都花费 10 秒,无论模拟器运行得比实时更快还是更慢。

方案 每月 CI 分钟数 同时运行的任务数 最长运行时间
Free 无 无 无
Maker 200 1 5 分钟
Pro 2,000 2 10 分钟

从未启动的运行(未知的开发板、与开发板不匹配的固件、被拒绝的场景)不产生任何费用。分钟数在每月第一天(UTC)重置。你的余额、运行历史和令牌位于 /account/ci:

CI 账户页面:本月已用分钟数、现有令牌及其各自最后使用时间,以及一张包含最近运行的状态、模拟秒数、计费秒数和退出代码的表格

在你指向 CLI 的目录中有两个文件:

  • velxio.toml:开发板和固件。Wokwi 的 wokwi.toml 也可以使用。
  • diagram.json:电路。采用 Wokwi 的格式,因此现有的电路图可以原样运行。

当仅靠串口检查不够时,添加 scenario.yaml:它可以等待文本、发送文本、等待模拟时钟、检查引脚,以及设置部件上的控件。参见场景。