今天發現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中看到Windows service想要啟動時發現找不到檔案。
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)
回頭看前一個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
沒有留言:
張貼留言