2015-03-20 9 views
7

Uso la configurazione master-slave di Jenkins per acquisire le metriche di prestazione di un prodotto. Abbiamo osservato che jenkins-slave tende ad accumulare memoria e quindi influenza le metriche delle prestazioni acquisite.Riavvia lo slave Jenkins dal master

Per garantire la coerenza delle metriche acquisite, stiamo pensando di riavviare lo slave Jenkins ogni giorno dal master, quando non ci sono lavori in esecuzione sullo slave. È fattibile?

Come possiamo realizzarlo?

Nota: l'utilizzo di jenkins-slave come servizio non è un'opzione, poiché si verificano altri problemi di accesso di sicurezza.

risposta

5

So che questa risposta è in arrivo un po 'tardi:

Ecco come ho fatto lo stesso per le stesse ragioni, non so se questo è il modo migliore per raggiungere questo obiettivo, ma ha risolto molti dei nostri problemi :

per computer con Windows:

  1. Creare un lavoro che viene eseguito semplicemente "shutdown -r -f" su macchine Windows. Riavvia le macchine.
  2. Ora riportandolo in linea. Per motivi simili al tuo, I non ha utilizzato "jenkins-slave as a service". Invece ho configurato i nodi di connettersi tramite client JNLP, e poi aggiunto il comando slave.jar per ciascun nodo task scheduler di finestra (per l'esecuzione su all'avvio)
  3. Ora il lavoro riavvia la macchina e la macchina di Windows portare stesso online su Jenkins stesso subito dopo il riavvio.

per le macchine Mac:

  1. il processo è relativamente più facile su Mac. Innanzitutto, esegui un lavoro per eseguire "shutdown -r now" sul nodo Mac

  2. Il nodo deve semplicemente essere configurato per connettersi tramite ssh. Questo sarà occuparsi di portarlo online su Jenkins.

Questa è stata la parte "eseguire la shell" del mio script per riavviare tutte le macchine utilizzate per il nostro automazione:

distro=`uname` 
if [ "$distro" = "Windows_NT" ] || [ "$distro" = "WindowsNT" ] ;then 
echo "Restarting Windows Machine...." 
shutdown -r -f 
else 
echo "Restarting Mac Machine...." 
sudo shutdown -r now 
fi 

PS:

Non è esattamente legato alla domanda , ma potrebbe essere utile per la situazione che hai specificato. Potrebbe essere una buona idea aggiungere uno script batch per pulire i file temporanei all'avvio delle macchine Windows. Aggiunta di seguito a uno script batch (ad esempio, cleanTemp.bat) nella cartella di avvio del computer Windows. (Per Windows 10, C: \ Users \\ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programmi \ Esecuzione automatica)

rmdir %temp% /s /q 

md %temp% 
+0

Come siete riusciti a eseguire il comando shutdown su tutti gli slave contemporaneamente? O hai semplicemente eseguito il lavoro più volte fino a quando non sono stati colpiti tutti gli schiavi? Ho un setup simile (molti windows, mac e centos slaves), ma non riesco a capire come riavviarli tutti in una volta in modo automatico. – user3270760

Problemi correlati