Docs / Command Line
命令行使用指南
通过 vmpal 命令行完成 CI/CD 集成与虚拟机管理。
CI/CD
在预先准备好的虚拟机副本中运行每个 CI 任务,用完即弃。
一次性准备一台虚拟机
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"
让它保持关机状态。之后如需改动,先启动、修改,再关机即可。
运行任务
vmpal run "CI Ubuntu" --copy-in .:src --copy-out src/out:./out -- /bin/sh -lc 'cd src && make test'
run 会复制虚拟机、启动副本、拷入你的文件、执行命令、拷出结果,然后删除副本——即使任务失败或被取消,副本也会被删除。它以命令的退出状态结束,任务随之成功或失败。
GitHub Actions
在 Mac 上的自托管 runner 中:
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> 查看其选项。
虚拟机
--permanently 彻底删除电源
--force 立即断电虚拟机内部
<VM>:<path>快照
其他
remove-location 将其移出列表,虚拟机仍保留在原处须知规则
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 会为你自动登录。