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
risposta
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.
Mi sembra di osservare un impatto significativo sulle prestazioni di Jenkins semplicemente usando quello annotazione. Forse è una coincidenza, ma è successo due volte di fila ... –
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ò .. –
currentThread() è un metodo, non una proprietà, btw –
Correlato. http://stackoverflow.com/questions/19070055/jenkins-job-running-system-groovy-script-how-to-respond-to-user-kill – Jayan