2015-09-25 3 views
5

In Jenkins ho un passo di generazione di script groovy di sistema. C'è un modo per cancellare uno script di lunga durata, o di avere del codice nello script groovy del sistema che può dire se la sua build è stata cancellata?Come si cancella uno script groovy di sistema

+2

Correlato. http://stackoverflow.com/questions/19070055/jenkins-job-running-system-groovy-script-how-to-respond-to-user-kill – Jayan

risposta

2

Jenkins interromperà il thread che sta eseguendo lo script quando si annulla la compilazione.

Quindi è possibile impostare manualmente lo stato di interruzione del thread e interrompere lo script in determinati punti, ad esempio manualmente check, ad es.

if (Thread.currentThread().interrupted()) { 
    throw new InterruptedException() 
} 

Oppure si può lasciare Groovy farlo perchè include la ThreadInterrupt annotazioni nello script, per esempio

@groovy.transform.ThreadInterrupt 

Assicurarsi inoltre che nessuno dei blocchi di cattura inghiottisca un'interruzione di interruzione.

+0

Mi sembra di osservare un impatto significativo sulle prestazioni di Jenkins semplicemente usando quello annotazione. Forse è una coincidenza, ma è successo due volte di fila ... –

+0

Quindi, penso che ci sia più di questo che l'occhio. Se il tuo script groovy di sistema sta avviando i thread, devi fare qualcosa su di essi prima di uscire. Non sono ancora sicuro di come catturarli tutti, ma suppongo che imparerò e scoprirò .. –

+0

currentThread() è un metodo, non una proprietà, btw –