簡體   English   中英

Jenkins:啟動遠程VM並保持其運行

[英]Jenkins: Start remote VM and keep it running

我正在嘗試讓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

第二個命令向我顯示VM實際上已經啟動並正在運行,但是顯然它又直接關閉了,因為我看不到與VM對應的節點處於聯機狀態。

Jenkins Slave代理作為Windows服務安裝在VM的主機上,並以域用戶身份登錄。

如果我將第一個命令切換到

"C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -x "D:\VM\MyVM.vmx"

VM啟動后,該節點連接到Jenkins。 這是因為批處理腳本在此命令后以某種方式卡住並且不會終止,因此VM保持開機狀態。 但是,如果我使用Jenkins服務使用的同一用戶登錄主機,則無法看到虛擬機正在運行。

具有諷刺意味的是,實際上,我可以通過使用batch命令創建一個項目來關閉我在Jenkins主機上本地啟動的任何虛擬機的電源

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

因此,總結一下:我想創建一個可以啟動VM的Jenkins作業,以便將其用作從屬代理。 即使完成工作后,VM也必須保持開機狀態,我將根據需要使用其他工作將其關閉。 但是,只有關閉作業才能按預期工作。

嘗試使用START命令啟動您的VM:

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

今天玩完VM和Jenkins之后,我了解到,如果Jenkins從站不是作為Windows服務運行而是通過Java Webstart應用程序啟動的,則vmrun可以完美運行。

此外,可以通過更改BUILD_ID env來防止進程被殺死。 變量,因為Jenkins使用此變量來跟蹤構建啟動的過程。 因此,通過在生成進程之前更改BUILD_ID的值,它們不會在作業完成后被殺死。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM