2015-03-20 13 views
7

Używam konfiguracji jenkins master-slave do przechwytywania Metryk wydajności produktu. Zauważyliśmy, że jenkins-slave ma skłonność do akumulowania pamięci, a tym samym wpływa na przechwytywanie danych wydajności.Restart Jenkinsa niewolnika od mistrza

Aby zapewnić spójność przechwyconych metryk, rozważamy ponowne uruchamianie niewolnika jenkins codziennie od kapitana, gdy nie ma żadnych zadań uruchomionych na urządzeniu slave. Czy to możliwe?

Jak możemy to zrobić?

Uwaga: używanie usługi Jenn-Slave jako usługi nie jest opcją, ponieważ mamy z nią inne problemy z dostępem do zabezpieczeń.

Odpowiedz

5

wiem, że to odpowiedź przychodzi w trochę późno

ten sposób zrobiłem to samo z tych samych powodów, nie wiem, czy jest to najlepszy sposób, aby osiągnąć ten cel, ale to rozwiązać wiele naszych problemów :

dla maszyn Windows:

  1. Utwórz zadanie, które po prostu działa "shutdown -r -f" na komputerach z systemem Windows. Spowoduje to ponowne uruchomienie maszyn.
  2. Teraz przynosi z powrotem część online. Z podobnych powodów jak ja, I nie użył "jenkins-slave jako usługi". Zamiast tego skonfigurowane węzły łączyć się za pośrednictwem klienta JNLP, a następnie dodaje komendy slave.jar dla każdego węzła w Harmonogramie zadań tło Windows (do pracy na starcie)
  3. Teraz zadanie restartuje komputer i urządzenie w systemie Windows przynieść się online na samym Jenkinsie zaraz po ponownym uruchomieniu.

dla maszyn Mac:

  1. Proces ten jest stosunkowo łatwiej na mac. Najpierw wykonaj zadanie, aby uruchomić "shutdown -r now" na węźle Maca

  2. Węzeł powinien po prostu zostać skonfigurowany, aby uzyskać połączenie przez ssh. To sprawi, że zajmie się online na Jenkins.

Był to "wykonać powłokę" część mojego skryptu do ponownego uruchomienia wszystkich urządzeń pracujących dla naszego automatyzacji:

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:

To nie jest dokładnie związane z pytaniem , ale może być przydatna w określonej sytuacji. Dobrym pomysłem może być dodanie skryptu wsadowego do czyszczenia plików tymczasowych podczas uruchamiania komputerów z systemem Windows. Dodaj do następującego skryptu wsadowego (Powiedz, cleanTemp.bat) w folderze startowym na komputerze z systemem Windows. (Dla Windows 10, C: \ Users \\ AppData \ Roaming \ Microsoft \ Windows \ Menu Start \ Programy \ Autostart)

rmdir %temp% /s /q 

md %temp% 
+0

Jak udało Ci się uruchomić polecenie shutdown na wszystkich jednocześnie niewolników? A może po prostu uruchamiałeś tę pracę wiele razy, aż do momentu trafienia każdego niewolnika? Mam podobną konfigurację (wiele okien, maców i centów niewolników), ale nie mogę wymyślić, jak uruchomić je wszystkie naraz w sposób zautomatyzowany. – user3270760