Docs / Command Line

命令行使用指南

通过 vmpal 命令行完成 CI/CD 集成与虚拟机管理。

CI/CD

在预先准备好的虚拟机副本中运行每个 CI 任务,用完即弃。

一次性准备一台虚拟机

sh
vmpal create download:ubuntu --name "CI Ubuntu" --wait
vmpal exec "CI Ubuntu" --admin -- apt-get update
vmpal exec "CI Ubuntu" --admin -- apt-get install -y build-essential git
vmpal stop "CI Ubuntu"

让它保持关机状态。之后如需改动,先启动、修改,再关机即可。

运行任务

sh
vmpal run "CI Ubuntu" --copy-in .:src --copy-out src/out:./out -- /bin/sh -lc 'cd src && make test'

run 会复制虚拟机、启动副本、拷入你的文件、执行命令、拷出结果,然后删除副本——即使任务失败或被取消,副本也会被删除。它以命令的退出状态结束,任务随之成功或失败。

GitHub Actions

在 Mac 上的自托管 runner 中:

yaml
jobs:
  test:
    runs-on: [self-hosted, macOS, ARM64]
    steps:
      - uses: actions/checkout@v7
      - run: vmpal run "CI Ubuntu" --copy-in .:src --copy-out src/out:./out -- /bin/sh -lc 'cd src && make test'

GitLab CI 同理:在 Mac 上使用 shell runner,并在任务脚本中写入同样的 vmpal run 命令。

须知

以 Mac 当前登录用户的身份运行 CI runner,并阻止 Mac 睡眠。

Windows 启动后停在登录界面。run 会使用 VMPal 为该虚拟机保存的密码自动登录;若密码失效,请在虚拟机的 设置 › 通用 › 账户 › 更新密码… 中更新。Windows 命令需使用 cmd.exe 或 powershell.exe。

macOS 在一台 Mac 上最多允许同时运行两个 macOS 虚拟机,因此 macOS 任务最多并发两个。

vmpal help ci 可查看更多内容,或询问你的 AI 智能体。

命令速览

全部命令一览。vmpal help <command> 查看其选项。

虚拟机

vmpal list
你的虚拟机及其运行状态
vmpal info <VM>
查看某台虚拟机的完整信息
vmpal systems
可安装的系统及其 ID
vmpal create <system> --wait
创建虚拟机并等待安装完成、可执行命令
vmpal clone <VM>
复制一台已关机的虚拟机
vmpal set <VM> --cpus 4 --memory 8
修改设置:硬件、共享文件夹、端口等
vmpal delete <VM>
将虚拟机移入废纸篓,--permanently 彻底删除
vmpal import / move / compress
导入、移动到 VMPal 的其他位置,或为迁移到另一台 Mac 打包
vmpal cancel [<VM>]
取消某台虚拟机的下载或移动;不带参数则取消正在进行的导入或压缩

电源

vmpal start <VM> --wait
启动虚拟机并等待其可执行命令
vmpal stop <VM>
关机,--force 立即断电
vmpal pause / resume / suspend / restart
与 VMPal 界面按钮相同
vmpal show <VM>
将运行中的虚拟机窗口置前
vmpal wait <VM>
等待虚拟机可执行命令

虚拟机内部

vmpal exec <VM> -- <command>
执行命令,实时输出
vmpal cp <from> <to>
拷入或拷出文件,虚拟机侧写法为 <VM>:<path>
vmpal run <VM> -- <command>
在虚拟机的全新副本中执行命令,随后删除副本
vmpal sign-in <VM>
在登录界面使用 VMPal 保存的密码登录
vmpal ui <VM> ...
点击、输入与截图
vmpal status <VM>
查询虚拟机是否可执行命令
vmpal send-files <VM> <path>...
将文件放到虚拟机用户桌面,等同拖放
vmpal reinstall-tools <VM>
重新安装 VMPal Tools

快照

vmpal snapshot <VM> [name]
拍摄快照
vmpal snapshots <VM>
列出快照
vmpal revert <VM> [name]
回滚到某个快照,默认最新
vmpal rename-snapshot / delete-snapshot
重命名快照,或彻底删除

其他

vmpal library
VMPal 的存储位置、Base OS 文件,以及正在进行的下载、导入或压缩
vmpal add-location <path>
添加存放虚拟机的文件夹(如另一块磁盘);remove-location 将其移出列表,虚拟机仍保留在原处
vmpal delete-base-os <id>
将 Base OS 文件移入废纸篓
vmpal tool <name> [<json>]
按名称调用 VMPal 的某个 MCP 工具
vmpal help [<command>]
查看全部命令,或某个命令的选项与说明

须知规则

exec、cp、run、ui 与 sign-in 需要虚拟机的智能体控制。它默认开启,除非被人关闭:vmpal set <VM> --agent-control on。

exec 不经 shell。需要管道和 && 时请自行启动一个:vmpal exec "Ubuntu" -- /bin/sh -c 'make && make test'。

exec 以文本形式读取输出,会改变二进制输出。拷贝二进制文件请用 cp。

--admin 以管理员身份执行命令。

单条命令最长可运行 24 小时(--timeout),且不接受输入。

cp 遵循 cp -R:vmpal cp . "Ubuntu:src" 会把当前文件夹的内容拷入 src。

在 Windows 中,命令在有人登录后才会执行。start --wait 与 run 会为你自动登录。