2010-09-21 9 views
17

Ho riscontrato un problema con Hudson su Windows.Riavvio di Hudson su Windows

Ogni volta che aggiorno Hudson o un plug-in, ottengo l'opzione di riavvio quando nessun processo è in esecuzione.
Se clicco su questo pulsante, Hudson si blocca e non si riavvia. Ho provato a riavviare il servizio Hudson ma questo non aiuta, quindi alla fine devo riavviare la scatola per riportare Hudson online.

Ho appena aggiornato la versione più recente, ma non ho fatto clic sul pulsante di riavvio e ora è scomparso.

Esiste un modo corretto per riavviare Hudson su Windows?

Acclamazioni

Tom

risposta

13

Ho anche questo problema una volta ogni tanto. Per qualche motivo, il server Hudson non si spegne completamente e il server che si avvia non può utilizzare la porta. Per risolvere questo problema, eseguo `netstat -n -o '. In questo modo posso trovare l'ID del processo che contiene la porta e uccidere quella app attraverso taskmanager. Ora posso riavviare il servizio e Hudson si presenta bene.

Nelle ultime settimane ho avuto un problema simile. La descrizione dice che riavvia l'app, quando nessun processo è in esecuzione. Ho perso un lavoro che era in attesa nella coda di build e a causa di una configurazione errata non è mai stato effettivamente creato, quindi impedendo il riavvio di Hudson.

Al termine di tutti i lavori, il server non si riavvia. Basta visitare nuovamente la pagina di riavvio http://server:port/restart e provare a riavviare di nuovo. Se ciò non funziona, interrompere il servizio e riavviarlo.


UPDATE:

Poiché sono cresciuto stanco di accedere fisicamente al server Hudson/Jenkins, io uso i seguenti comandi per eseguire il uccidere a distanza. Questi comandi presuppongono che tu esegua il servizio con un utente dedicato (ad es. JenkinsUser). Se un altro processo viene eseguito con le stesse credenziali del servizio e potrebbe avviare java.exe, è necessario eseguire il netstat che deve essere eseguito localmente sul server Jenkins o usando rexec (questa non era un'opzione per me).

:: get the pid of jenkins java.exe 
tasklist /S %JENKINSSERVER% /FI "IMAGENAME eq java.exe" /FI "USERNAME eq %DOMAIN\USERNAME%" 

:: terminate process use pid from previous command (instead of 1234) 
taskkill /S %JENKINSSERVER% /F /T /PID 1234 

:: stop the Jenkins service (just in case the service is hanging) 
sc \\%JENKINSSERVER% stop Jenkins 

:: start the Jenkins service again 
sc \\%JENKINSSERVER% start Jenkins 

Se ho molto tempo, potrei creare un copione da esso.

+0

Grazie per il tuo suggerimento Peter!Ho intenzione di eseguire l'aggiornamento alla fine della giornata e ci provo se si blocca. –

+1

Sorprendentemente, dal momento che questa domanda, ho aggiornato Hudson ei suoi plugin e non ha avuto un problema con il riavvio. Riesco a vedere la logica in quello che stai dicendo Peter così segnerà la tua risposta come quella accettata. Grazie per l'aiuto! –

+1

/restart non ha funzionato per me. Ho avuto un pulsante per riavviare e una volta cliccato ho ricevuto il seguente errore. udson.lifecycle.RestartNotSupportedException: Default ciclo di vita di Windows non supporta il riavvio. \t a hudson.lifecycle.Lifecycle $ 1.verifyRestartable (Lifecycle.java:83) non ho installato Hudson come servizio di Windows dal momento che non era un'opzione in Gestione Hudson. Sto eseguendo la versione 1.3.98 sul mio computer Windows 7 locale. – CACuzcatlan

1

Se il nodo slave ha la slave.jar utilizzato come un servizio di Windows, che il servizio è definito come "Automatico".
Significa che proverà a contattare il master periodicamente se la connessione è stata interrotta.

Non si deve fare clic su nulla sul lato server (nella definizione del nodo) per riavviare detto nodo: dovrebbe tornare automaticamente in linea.

+0

Grazie per la vostra risposta VonC. In realtà non sto eseguendo nessuno schiavo. Solo hudson come un maestro. Quindi hai qualche idea del perché si blocca quando faccio clic sul pulsante di riavvio? –

+1

@Toggo: oh ok. La risposta di Peter potrebbe essere più rilevante allora. – VonC

1

Se Jenkins è stato installato su un server TomCat, una soluzione alternativa consiste semplicemente nel riavviare il servizio Apache TomCat.

+1

Mi ha aiutato :) – amalBit