Jenkins スレーブ上で Jenkins に仮想マシンを起動させようとしています。その後、VM 自体が Jenkins スレーブとして機能します。そのためには、Jenkins ジョブが終了した後でも、VM を起動して実行し続ける必要があります。スレーブでバッチ スクリプトを実行し、VM が実行されているかどうかを確認するフリースタイル プロジェクトを作成しようとしました。
"C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" -T ws start "D:\VM\MyVM.vmx"
"C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" list
2 番目のコマンドは、VM が実際に稼働中であることを示していますが、VM に対応するノードがオンラインとして表示されないため、VM は直接シャットダウンされているようです。
Jenkins スレーブ エージェントは、VM のホストに Windows サービスとしてインストールされ、ドメイン ユーザーとしてログインします。
最初のコマンドを
"C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -x "D:\VM\MyVM.vmx"
VM の電源がオンになり、ノードが Jenkins に接続されます。これは、このコマンドの後でバッチ スクリプトがスタックして終了せず、VM の電源が入ったままになるためです。ただし、Jenkins サービスが使用するのと同じユーザーでホストにログオンすると、VM が実行されていることがわかりません。
皮肉なことに、バッチ コマンドでプロジェクトを作成することにより、Jenkins からホスト上でローカルに起動した仮想マシンの電源をオフにすることができます。
"C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" -T ws stop "D:\VM\MyVM.vmx" soft
要約すると、VM の電源を入れる Jenkins ジョブを作成して、VM をスレーブ エージェントとして使用できるようにしたいと考えています。ジョブが完了した後も VM の電源を入れたままにしておく必要があります。必要に応じて、別のジョブで VM をシャットダウンします。ただし、シャットダウン ジョブのみが意図したとおりに機能しています。