1

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 をシャットダウンします。ただし、シャットダウン ジョブのみが意図したとおりに機能しています。

4

2 に答える 2

1

START コマンドで VM を起動してみてください:

START "C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" -T ws start "D:\VM\MyVM.vmx"

于 2015-03-23T14:34:53.720 に答える
0

今日 VM と Jenkins をいじってみたところ、Jenkins スレーブが Windows サービスとして実行されず、Java Webstart アプリケーションを介して起動される場合、vmrun が完全に機能することがわかりました。

さらに、BUILD_ID env を変更することで、プロセスが強制終了されるのを防ぐことができます。Jenkins はこの変数を使用して、ビルドが起動したプロセスを追跡するためです。そのため、プロセスを生成する前に BUILD_ID の値を変更することで、ジョブの終了後にプロセスが強制終了されることはありません。

于 2015-07-02T12:35:33.293 に答える