You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins流水线中调用VirtualBox虚拟机内MSYS2 Shell并获取输出与返回码

问题背景

需在CI流水线的Windows环境中构建软件,当前采用Linux主机上的VirtualBox运行搭载MSYS2 Shell的Win10虚拟机,Jenkins代理部署于Linux主机。核心问题:无法在MSYS2 Shell中远程执行命令并获取实时输出,更严重的是命令执行失败时无法获取返回码,直接导致流水线超时。

已尝试方案

1. vboxmanage guestcontrol

  • 通过msys2_shell.cmd传递各类参数,要么无法运行,要么PATH等环境变量配置异常,推测vboxmanage guestcontrol会先通过cmd.exe等Windows层执行命令,导致与MSYS2 Shell交互异常。示例命令vboxmanage guestcontrol "${VM_NAME}" --username <name> --password <psd> run -- C:/msys64/msys2_shell.cmd -ucrt64 "ls -a > Z:/ls.log"可执行,但无法实时查看控制台输出,执行exit 1时流水线阶段不会触发失败。
  • 尝试通过cmd.exe、配置MSYS2为默认Shell的Windows Terminal、PowerShell运行MSYS2命令,均无效果。

2. SSH

  • 在虚拟机中配置开机自启的SSH服务器:
    • 采用msys2 sshd方案,PATH等环境变量配置异常。交互式SSH登录MSYS2 Shell正常,但非交互式执行命令时环境异常,提示ls is not a command,推测Windows OpenSSH会先通过Windows Shell执行命令,无法直接调用MSYS2 Shell,不符合流水线需求。
    • 尝试配置Windows SSH服务器并在注册表设置DefaultShell为MSYS2,同样无效。

内容的提问来源于stack exchange,提问作者0000110001111000100010

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:05:08