1

我在 jenkins 上使用 VirtualBox 插件来启动从 Git 检索源的不同构建。我希望通过在启动它们进行构建之前还原快照来清洁每个 VM 上的环境。

我尝试了几件事作为https://wiki.jenkins-ci.org/display/JENKINS/Slave+Setup+Plugin。最后,我认为这不是一个好的解决方案,因为它是在 git 存储库被克隆后调用的......但我也尝试“通过在主服务器上执行命令”启动从属服务器,它将名称作为参数vm 并调用此脚本:

VBoxManage registervm "C:\Users\mfauvet\VirtualBox VMs\%1\%1.vbox
VBoxManage controlvm %1 poweroff
VBoxManage snapshot %1 restore SetEnvironment
VBoxManage startvm %1
ssh 192.168.120.1 -p 1310

但我有以下错误:

C:\Program Files (x86)\Jenkins>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" registervm "C:\Users\mfauvet\VirtualBox VMs\Jenkins-Ubuntu13.10\Jenkins-Ubuntu13.10.vbox" 
VBoxManage.exe: error: Trying to open a VM config 'C:\Users\mfauvet\VirtualBox VMs\Jenkins-Ubuntu13.10\Jenkins-Ubuntu13.10.vbox' which has the same UUID as an existing virtual machine
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component Machine, interface IMachine, callee IUnknown
VBoxManage.exe: error: Context: "OpenMachine(Bstr(a->argv[0]).raw(), machine.asOutParam())" at line 88 of file VBoxManageMisc.cpp

C:\Program Files (x86)\Jenkins>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm Jenkins-Ubuntu13.10 poweroff 
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

C:\Program Files (x86)\Jenkins>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" snapshot Jenkins-Ubuntu13.10 restore SetEnvironment 
0%...10%...20%...30%...40%...50%...
Progress object failure: RPC_S_SERVER_UNAVAILABLE 0x800706BA
Restoring snapshot 7f7cc1a3-7128-426a-bf74-9ffb0b3fbca8

C:\Program Files (x86)\Jenkins>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm Jenkins-Ubuntu13.10 
VBoxManage.exe: error: Could not find a registered machine named 'Jenkins-Ubuntu13.10'
VBoxManage.exe: error: Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component VirtualBox, interface IVirtualBox, callee IUnknown
VBoxManage.exe: error: Context: "FindMachine(Bstr(pszVM).raw(), machine.asOutParam())" at line 575 of file VBoxManageMisc.cpp

有人知道我该如何解决这个问题吗?或者有没有更好的方法在通过 Jenkins 启动它们之前恢复我的 vm 上的快照?谢谢阅读

4

1 回答 1

0

我得到了这个工作,诚然与 VMWare 一起工作。

我采取的步骤

  1. swarm插件添加到 master
  2. 设置虚拟机并添加swarm 客户端
  3. 确保客户端连接 - 将在主节点中
  4. 在从属客户端运行时拍摄快照(或在启动时启动它)
  5. 在您的 swarm slave 上运行的 master 上创建一个作业
  6. 添加多作业插件以使用正常步骤创建多作业项目以恢复虚拟机
  7. 添加多作业阶段
  8. 将 swarm slave 作业添加到 multijob 阶段

运行作业时,swarm slave 作业将等待 VM 启动,然后再向其提交作业

于 2014-03-21T22:48:19.293 回答