1

Git からソースを取得するさまざまなビルドを起動するために、jenkins で VirtualBox プラグインを使用しています。ビルドを開始する前にスナップショットを復元して、各 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. master にswarmプラグインを追加する
  2. 仮想マシンのセットアップとswarm クライアントの追加
  3. クライアントが接続していることを確認してください - マスターのノードになります
  4. 実行中のスレーブ クライアントでスナップショットを取得します (または起動時に開始します)。
  5. あなたの群れのスレーブで実行されるマスターでジョブを作成します
  6. マルチジョブプラグインをマスターに追加VM を元に戻す通常の手順でマルチジョブ プロジェクトを作成
  7. マルチジョブ フェーズを追加する
  8. swarm スレーブ ジョブをマルチジョブ フェーズに追加する

ジョブを実行するとき、swarm スレーブ ジョブは VM が起動するのを待ってからジョブを送信します。

于 2014-03-21T22:48:19.293 に答える