2016-07-15 10 views
4

Meine Jenkins Pipeline-Stufen sind alle erfolgreich, aber der Build sagt immer, dass es fehlgeschlagen ist. Um es klar zu sagen, der Build war ein Erfolg und ich möchte, dass er sich bei Jenkins als erfolgreich registriert, aber aus irgendeinem Grund denkt Jenkins, dass er gescheitert ist. Alle Stufen sagen Erfolg im Armaturenbrett, aber der Build ist mit einem roten Ball markiert und die Konsolenausgabe endet mit Finished: FAILURE.Jenkins Pipeline schlägt immer fehl

Hier ist meine Pipeline-Datei

node { 
    try{ 
     stage 'Clone repo' 
     sh 'gcloud source repos clone <repo-name> --project=<project-name>' 
     dir('<repo-name>') { 
      try{ 
       stage 'Run tests' 
       sh './gradlew test' 
       stage 'Run integration tests' 
       sh './gradlew integrationTest' 
       publishHTML(target: [ 
        allowMissing: false, 
        alwaysLinkToLastBuild: false, 
        keepAll: false, 
        reportDir: '<repo-name>/build/reports/integrationTest', 
        reportFiles: 'index.html', 
        reportName: 'Integration Test Reports']) 
      } finally { 
       stage 'Stop and remove docker containers' 
       sh 'docker-compose down' 
       sh 'docker-compose rm -f' 
      } 
     } 
    } finally { 
     deleteDir() 
    } 
} 
+1

Wo Jenkins einen Fehler nicht zeigen? Gibt es eine Fehlermeldung? Im Allgemeinen sollten Sie die Option currentBuild.result nur dann verwenden, wenn sie benötigt wird - verlassen Sie sich auf den Fehlerschritt ('message') und versuchen Sie/catch-Blöcke (um unerwartetes Verhalten zu vermeiden). Oh: Ich sollte erwähnen, dass ich ein Entwickler bin, der an der Pipeline arbeitet und hier die Pipelinestufenansicht pflegt. – BobMcGee

+0

Ich habe nur die hinzugefügt, um es zum Laufen zu bringen. Ich habe sie entfernt und es schlägt immer noch fehl. Muss ich Protokollnachrichten hinzufügen, die Erfolg oder etwas sagen? –

+0

Nein, nur nicht den Fehler abfangen. – BobMcGee

Antwort

1

Ich erkannte ich den vollständigen Pfad zu den HTML-Berichte enthalten hatte, als ich tatsächlich in einem Richt-Block war. Es gab keinen Hinweis in den Protokollen davon.

+1

Ja, wenn Sie die Ausnahme verschlucken, verlieren Sie diese Information. – BobMcGee

1

ist Ihr Problem gelöst?

Trotzdem kann die Funktion deleteDir manchmal ein Problem sein. Da deleteDir das aktuelle Verzeichnis und seinen Inhalt rekursiv löscht, können Sie einen Fehler melden, wenn Sie versuchen, den gesamten Job-Arbeitsbereich zu löschen.

Achten Sie darauf, es in einem Verzeichnis-Funktion zu verwenden, wie unten:

dir('directoryToDelete') { 
    deleteDir() 
} 
+0

Ja, es ist gelöst. Danke für den Tipp. –