Jenkins 无法启动 Oracle VirtualBox

问题描述 投票:0回答:2

我制作了一个批处理文件,可以在无头模式下运行 Oracle 的 VirtualBox。当我在 Windows 命令提示符中运行该命令时,它工作正常,没有任何错误。

C:\Program Files\Oracle\VirtualBox>VBoxManage startvm "Ubuntu" --type headless
Waiting for VM "Ubuntu" to power on...
VM "Ubuntu" has been successfully started.

C:\Program Files\Oracle\VirtualBox>

但是,当我通过 Jenkins 调用具有相同命令的批处理脚本时,出现以下错误:

C:\Program Files\Oracle\VirtualBox>VBoxManage startvm "Ubuntu" --type headless 
VBoxManage.exe: error: Failed to create the VirtualBox object!
VBoxManage.exe: error: The object is not ready
VBoxManage.exe: error: Details: code E_ACCESSDENIED (0x80070005), component VirtualBoxClientWrap, interface IVirtualBoxClient

从 Jenkins 调用的每个 VirtualBox 命令都会给出相同的错误。

C:\Program Files\Oracle\VirtualBox>VBoxManage sharedfolder add "Ubuntu" --name BranchRepo --hostpath "A PATH" --automount 
VBoxManage.exe: error: Failed to create the VirtualBox object!
VBoxManage.exe: error: The object is not ready
VBoxManage.exe: error: Details: code E_ACCESSDENIED (0x80070005), component VirtualBoxClientWrap, interface IVirtualBoxClien

关于如何解决这个问题有什么建议吗?是否有某种特定的方式来授予 Jenkins 所需的权限?

windows jenkins virtual-machine virtualbox
2个回答
0
投票

运行它的用户似乎具有不正确的权限。 您可以尝试以单独的本地管理员用户身份运行 Jenkins 的服务。
开始=>“服务”=>滚动到Jenkins服务=>右键单击=>属性=>“登录”=>“此帐户”=>指定本地管理员帐户。
编辑
编辑“注册表编辑器”有效


0
投票

我遇到了同样的问题并设法解决了它,所以我会在这里回答我船上未来的搜索者!

这是由于我的用户没有启动 VirtualBox 应用程序 和/或 VirtualBox 系统服务 DCOM 对象的权限造成的。

默认情况下,通过 COM 使用 VirtualBox 所需的权限意味着您必须是“交互式用户或管理员”。您的 Jenkins 用户可能两者都不是,因此在尝试实例化 COM 对象时会得到 E_ACCESSDENIED

当您使用命令提示符时它会起作用,因为这样您的用户是交互式的。 (您可以从命令提示符和 Jenkins 运行 whoami /groups

来查看同一用户如何被两种不同的环境以不同的方式“对待”。)

要更改所需的权限:

打开Windows的

组件服务
  1. 展开计算机
  2. >
  3. 我的电脑 > DCOM 配置 查找 VirtualBox 应用程序
  4. 右键单击 > 属性
      >
    1. 安全性 对于三个类别中的每一个,单击 编辑
    2. ,添加您的用户,并为其授予列出的所有权限
    3. 重复
    VirtualBox 系统服务
© www.soinside.com 2019 - 2024. All rights reserved.