使用virtualbox插件在内置jenkins之前恢复快照

使用virtualbox插件在内置jenkins之前恢复快照,jenkins,virtualbox,slave,Jenkins,Virtualbox,Slave,我在jenkins上使用VirtualBox插件,以启动从Git检索源代码的不同构建。我希望每个VM上的环境都是干净的,在启动它们进行构建之前先恢复快照 我试了几样东西作为参考。 最后,我不认为这是一个好的解决方案,因为它在git存储库被克隆后被称为。。。但我也尝试通过在master上执行命令来启动slave,该命令将vm的名称作为参数,并调用以下脚本: VBoxManage registervm "C:\Users\mfauvet\VirtualBox VMs\%1\%1.vbox VBoxM

我在jenkins上使用VirtualBox插件,以启动从Git检索源代码的不同构建。我希望每个VM上的环境都是干净的,在启动它们进行构建之前先恢复快照

我试了几样东西作为参考。 最后,我不认为这是一个好的解决方案,因为它在git存储库被克隆后被称为。。。但我也尝试通过在master上执行命令来启动slave,该命令将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上恢复快照?
感谢您阅读

我确实通过VMWare实现了这一点

我采取的步骤

将插件添加到主机 安装虚拟机并添加 确保客户端连接-将位于主节点中的节点中 在从属客户端运行时拍摄快照,或在启动时启动快照 在主服务器上创建一个作业,该作业在群集从服务器上运行 将插件添加到主创建多作业项目中,使用正常步骤恢复VM 添加多作业阶段 将swarm从属作业添加到多作业阶段
当运行作业时,swarm slave作业将等待VM启动,然后再向其提交作业

从构建脚本执行或编写自己的插件-我永远无法让它与vbox插件或任何其他虚拟机监控程序插件一起工作..你的意思是,创建一个哑从机并将其作为命令启动?事实上,我也试过了,但詹金斯不这样识别我的虚拟机。。。这就是我在上面粘贴的错误。您可能试图恢复刚备份的机器,因此机器的唯一id保持不变,错误基本上是说不能有两台机器具有相同的UIDI。我认为这不符合我的问题。最后,我通过在主机上执行命令使其与dumb slave一起工作,选项为launch slave。该命令是一个脚本,用于恢复快照、启动虚拟机并通过plink连接到虚拟机。我有一个问题,通过ssh连接到我的奴隶,虽然它与ssh奴隶插件与最新版本的詹金斯,所以我安装了最旧的版本1.510,它与这一个工作良好。。。