Questo è stato progettato per l'uso quando si ha un passaggio di generazione script di shell. Utilizzare solo le prime due righe per ottenere il nome del file.
È possibile ottenere il file di log della console (usando la magia bash) per la generazione di corrente da uno script di shell in questo modo e controllare la presenza di una certa stringa di errore, in mancanza del lavoro se trovato:
logFilename=${JENKINS_HOME}/${JOB_URL:${#JENKINS_URL}}
logFilename=${logFilename//job\//jobs\/}builds/${BUILD_NUMBER}/log
grep "**Failure**" ${logFilename} ; exitCode=$?
[[ $exitCode -ne 1 ]] && exit 1
Devi creare il nome del file prendendo il JOB_URL, rimuovendo la parte del nome host principale, aggiungendo nel percorso a JENKINS_HOME, sostituendo "/ job /" in "/ jobs /" per gestire tutte le cartelle nidificate, aggiungendo il numero di build corrente e il file nome.
Il grep restituisce 0 se la stringa viene trovata e 2 se c'è un errore di file. Quindi un 1 significa che ha trovato la stringa di indicazione dell'errore. Questo fa fallire la build.
fonte
2017-04-21 00:43:37
In passato, ho provato la soluzione proposta da @ Dvir669 e il comando wget non ha ottenuto il registro completo della console. Ecco perché ho usato il metodo descritto nella mia soluzione. Quindi se vuoi lavorare sul tuo log di build in un'azione step post build, la mia soluzione è migliore (credo). –
Questo fallisce per il mio Jenkins a causa del fatto che la cartella viene chiamata solo "lastSuccessful". Ma mentre una build è in esecuzione, 'lastSuccessful' è una build precedente e di successo, non la build corrente. La build corrente diventa l'ultima completata se termina correttamente. –
Anche questo non riesce se il lavoro di compilazione è all'interno di una cartella. JOB_NAME non contiene le cartelle intermedie "/ jobs /" che sono presenti in una cartella. –