2017年12月26日 星期二

Jenkins slave離線與 slave service無法啟動

今天發現Jenkins的其中一個slave node突然離線。
經過檢查,該slave的網路良好,與master的網路連線也都正常。

那麼為何會離線呢

查了一陣子發現在Windows service中的Jenkins slave服務無故停止了。
嘗試手動啟用服務,但是都一直顯示服務啟動後又自動停止的訊息。



顯示的訊息不足以判斷發生什麼事情,我們到Windows的event log來看看發生什麼事情。


從Error的訊息
Service cannot be started. System.ComponentModel.Win32Exception: The system cannot find the file specified
   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
   at winsw.WrapperService.StartProcess(Process processToStart, String arguments, String executable)
   at winsw.WrapperService.OnStart(String[] _)
   at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)
中看到Windows service想要啟動時發現找不到檔案。

回頭看前一個Event log:

發現是在執行C:\Program Files (x86)\Java\jre1.8.0_77\bin\java.exe -Xrs  -jar "D:\JENKINS_HOME\slave.jar" 時噴出錯誤的。

回頭確認路經C:\Program Files (x86)\Java\jre1.8.0_77\,發現此路徑確實不存在。猜測可能是有人更新jre版本導致。


現在我們必須設定Jenkins slave使用正確的jre版本。
從master jenkins的node管理中可以找到slave node的home目錄是在D:\JENKINS_HOME\

編輯slave node的D:\JENKINS_HOME\jenkins-slave.xml,
修改其中jre的版本即可。

正確修改後Jenkins slave service就能正常啟動,並且連回master Jenkins了。

Reference: failed-to-start-jenkins-after-updating-java

沒有留言:

張貼留言