Jenkinsfile Try-Catch

Jenkinsfile Try-Catch

I blocchi di prova in Jenkins sono un modo per gestire le eccezioni che possono essere lanciate durante l'esecuzione di una pipeline di Jenkins. Ci consentono di definire un blocco di codice e specificare i blocchi separati da eseguire se viene lanciata un'eccezione.

Ciò può essere utile per gestire specifiche condizioni di errore e intraprendere azioni appropriate, come il riproduzione di una build non riuscita o la registrazione di un messaggio di errore.

Jenkins prova a catturare i blocchi

Per utilizzare i blocchi di prova in Jenkins, possiamo usare un blocco di script e definire un codice groovy all'interno di quel blocco.

Di seguito mostra la sintassi dei blocchi di prova che possiamo usare in Jenkins:

Tentativo
// Blocco codice da testare
catch (eccezione e)
// Esegui se viene lanciata un'eccezione

Nel blocco di prova, possiamo mettere qualsiasi codice che vogliamo essere eseguiti. Se viene lanciata un'eccezione durante l'esecuzione, la pipeline salterà al blocco di cattura che definisce il codice da eseguire in caso di eccezione

Possiamo anche specificare un tipo specifico di eccezione da catturare impostandolo nel blocco di cattura. Per esempio:

Tentativo
// Blocco codice da eseguire
catch (ioException e)
// Esegui se viene lanciato un IOException

Questo può essere utile se vogliamo gestire diversi tipi di eccezioni in modo diverso. Ad esempio, potremmo voler riprovare una build se non riesce a causa di un errore di rete ma registrare un messaggio di errore ed uscire se non riesce a causa di un errore di sintassi.

Come gestire più eccezioni

Possiamo usare più blocchi di cattura per gestire diversi tipi di eccezioni. Per esempio:

Tentativo
// Blocco codice da testare
catch (ioException e)
// Esegui se viene lanciato un IOException
catch (nullpointerException e)
// Esegui se viene lanciato un nullpointerException

In questo caso, se viene lanciato un IOException, verrà eseguito il codice nel primo blocco di cattura. Se viene lanciato un nullpointerException, verrà eseguito il codice nel secondo blocco di cattura.

Il blocco finalmente

Inoltre, per cercare di catturare blocchi, possiamo anche utilizzare un blocco finalmente per specificare il codice che dovrebbe essere eseguito indipendentemente dal fatto che venga lanciata un'eccezione.

Ad esempio, la seguente sintassi mostra l'uso del blocco finalmente in una pipeline di Jenkins:

Tentativo
// Blocco codice
catch (eccezione e)
// Esegui l'eccezione
Finalmente
// Esegui indipendentemente dal fatto che venga lanciata un'eccezione

Il codice nel blocco finalmente verrà eseguito dopo il blocco di prova e sono stati eseguiti tutti i blocchi di cattura. Ciò può essere utile per ripulire le risorse o eseguire altre attività che dovrebbero essere svolte indipendentemente dal fatto che sia stata lanciata un'eccezione.

Esempio di utilizzo

La pipeline di esempio seguente dimostra come possiamo usare i blocchi di prova in una pipeline Jenkins:

tubatura
agente qualsiasi
fasi
Stage ('prompt for Input')
Passaggi
script
def userinput
UserInput = Messaggio di input: 'Immettere un valore:', ID: 'user_input'
Tentativo
Echo "Input utente: $ userInput"
catch (eccezione e)
userinput = messaggio di input: 'input non valido. Immettere un valore valido: ', ID:' user_input '
Ritratta (3)





In questa pipeline dichiarativa, il blocco di script racchiude un codice groovy che richiede all'utente un determinato input. Se non viene fornito alcun input, lo script riproverà il prompt tre volte prima di abortire.

Conclusione

In questo articolo, abbiamo imparato a utilizzare i blocchi di prova nella pipeline Jenkins per gestire le eccezioni.