Dieses für den Einsatz, wenn Sie einen Shell-Skript Build-Schritt haben. Verwenden Sie nur die ersten beiden Zeilen, um den Dateinamen zu erhalten.
Sie können die Konsolenprotokolldatei (mit bash Magie) für den aktuellen Build von einem Shell-Skript auf diese Weise erhalten und es für einige Fehlerzeichenfolge überprüfen, um den Job versagt, wenn gefunden:
logFilename=${JENKINS_HOME}/${JOB_URL:${#JENKINS_URL}}
logFilename=${logFilename//job\//jobs\/}builds/${BUILD_NUMBER}/log
grep "**Failure**" ${logFilename} ; exitCode=$?
[[ $exitCode -ne 1 ]] && exit 1
Sie müssen Erstellen Sie den Dateinamen, indem Sie JOB_URL abziehen, den führenden Hostnamen entfernen, den Pfad zu JENKINS_HOME hinzufügen, "/ job /" zu "/ jobs /" hinzufügen, um alle verschachtelten Ordner zu bearbeiten, die aktuelle Buildnummer und die Datei hinzufügen Name.
Das grep gibt 0 zurück, wenn die Zeichenfolge gefunden wird, und 2, wenn ein Dateifehler vorliegt. Eine 1 bedeutet also, dass die Fehleranzeige gefunden wurde. Das schlägt den Build fehl.
In der Vergangenheit habe ich die von @ Dvir669 vorgeschlagene Lösung ausprobiert, und der Befehl wget konnte nicht das vollständige Konsolenprotokoll abrufen. Deshalb habe ich die in meiner Lösung beschriebene Methode verwendet. Wenn Sie also an Ihrem Build-Protokoll in einer Post-Build-Schrittaktion arbeiten möchten, ist meine Lösung besser (denke ich). –
Das scheitert bei meinem Jenkins, weil der Ordner nur 'lastSuccessful' heißt. Aber während ein Build ausgeführt wird, ist "lastSuccessful" ein früherer erfolgreicher Build, nicht der aktuelle Build. Der aktuelle Build wird nur dann zum letzten erfolgreichen, wenn er erfolgreich abgeschlossen wurde. –
Dies schlägt auch fehl, wenn sich der Build-Job in einem Ordner befindet. JOB_NAME enthält nicht die Zwischenordner '/ jobs /', die in einem Ordner vorhanden sind. –