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 會為你自動登入。