GNU/Linux >> Linux Esercitazione >  >> Linux

non fallire la build di jenkins se l'esecuzione della shell fallisce

Per interrompere l'ulteriore esecuzione quando command fallisce:

command || exit 0

Per continuare l'esecuzione quando command fallisce:

command || true


Jenkins sta eseguendo i passaggi di compilazione della shell utilizzando /bin/sh -xe per impostazione predefinita. -x significa stampare ogni comando eseguito. -e significa uscire con errore se uno qualsiasi dei comandi nello script fallisce.

Quindi penso che quello che è successo nel tuo caso sia il tuo comando git exit con 1, e a causa del -e predefinito param, la shell rileva il codice di uscita diverso da 0, ignora il resto dello script e contrassegna il passaggio come un errore. Possiamo confermarlo se puoi postare qui il tuo script della fase di compilazione.

In tal caso, puoi provare a inserire #!/bin/sh in modo che lo script venga eseguito senza opzioni; o fai un set +e o qualcosa di simile in cima alla fase di compilazione per sovrascrivere questo comportamento.

Modificato:un'altra cosa da notare è che, se l'ultimo comando nello script della tua shell restituisce codice diverso da 0 , l'intera fase di compilazione verrà comunque contrassegnata come non riuscita anche con questa configurazione. In questo caso, puoi semplicemente inserire un true comando alla fine per evitarlo.

Un'altra domanda correlata


Se non c'è nulla da inviare, git restituisce lo stato di uscita 1. La fase di esecuzione della build della shell è rispettivamente contrassegnata come non riuscita. È possibile utilizzare l'istruzione OR || (doppio tubo).

git commit -m 'some messasge' || echo 'Commit failed. There is probably nothing to commit.'

Ciò significa che esegui il secondo argomento se il primo fallisce (stato di uscita restituito> 0). Il secondo comando restituisce sempre 0. Quando non c'è nulla da inviare (exit status 1 -> esegui secondo comando) echo restituirà 0 e la fase di build continua.

Per contrassegnare la build come instabile puoi utilizzare il passaggio post-build Jenkins Text Finder. Può passare attraverso l'output della console, abbinare il modello (la tua eco) e contrassegnare la build come instabile.


Linux
  1. Eseguire il comando nel terminale attivo remoto?

  2. Eseguire il comando su un intervallo definito di directory?

  3. Eseguire un comando della shell su un evento di clic in una pagina Web?

  4. Eseguire un comando in cui si trova un file?

  5. Esempi di comandi chsh in Linux

Comando sorgente in Linux

Come eseguire un comando Shell con Python

Come eseguire i comandi della shell tramite il server HTTP

Shell dei comandi

Spiegazione del comando sorgente su Linux

Come eseguire un comando in uno script della shell?