Jenkins mit Pylint gibt Build-Fehler

7

Ich habe einen Build-Schritt hinzugefügt, um ein Python-Skript auszuführen.
In diesem Skript wird pylint mit dem lint.Run (.. args) aufgerufen, um den Code zu überprüfen.
Das Skript funktioniert, aber am Ende schlägt der Build mit der einzigen Fehlermeldung fehl:

Build step 'Execute Python script' marked build as failure

Jemand hat eine Idee, warum das passiert?

    
Gobliins 08.09.2011, 11:20
quelle

5 Antworten

1

Es sieht so aus, als würde Ihre pylint-Ausführung mit einem Nicht-Null-Status enden (fehlendes Skript, falsche Optionen ...), vielleicht beenden Sie das Skript mit einer ausgelösten Ausnahme oder einem sys.exit(something_else_than_zero)

    
Cédric Julien 08.09.2011, 11:45
quelle
15

Sie können auch einfach ein

setzen
  

pylint || beenden Sie 0

in der Shell-Befehlszeile. Das Pylint-Plugin wird den Build trotzdem abbrechen, indem es das Ergebnis von pyllint überprüft.

    
fabrizioM 28.01.2012 23:05
quelle
12

Pylint hat das unangenehme Verhalten, einen Exit-Code ungleich null zurückzugeben, auch wenn nur ein kleines Problem gefunden wurde. Nur wenn alles in Ordnung war, wird 0 zurückgegeben (siehe Manpage).

Da normalerweise ein Code ungleich Null einen Fehler anzeigt, schlägt Jenkins den Build fehl.

Ich sehe zwei Möglichkeiten, dies zu überwinden:

  • Verwenden Sie ein kleines Skript um pylint, das immer 0 zurückgibt. Dann wird jenkins nicht aufgrund von pylint fehlschlagen. Ich verwende ein kleines Python-Skript, das pylint mit os.system () und sys.exit (0) nach dem Aufruf aufruft. Sie können dies als Überschreiben des Fehlercodes von pylint sehen.
  • Patch pylint. Auf meinem Linux-System befindet sich beispielsweise der Aufruf sys.exit () in der Datei /usr/lib/pymodules/python2.6/pylint/lint.py
dmeister 08.09.2011 12:01
quelle
3

Recent rylint hat die Option, sys exit nicht aufzurufen

lint.Run (args, exit = False, ** kwargs)

    
kmmbvnr 03.04.2012 03:09
quelle
0

Ich stimme @dmeister zu, aber mit dem Pipeline-Code (Jenkinsfile) schlage ich einen try / catch vor und parse dann den Fehler. Auf diese Weise können Sie feststellen, ob Sie nur Statusbits von pylint erhalten (siehe die Pylint-Dokumentation), ob pylint einen Verwendungsfehler meldet oder ob ein katastrophaler Fehler aufgetreten ist:

%Vor%

Entschuldige die groovigen Puristen - groovy ist nicht mein Ding, also bin ich mir sicher, dass das verbessert werden kann - lass es mich wissen. Es gibt eine bekannte Lücke: Wenn pylint nur "fatale" Fehler (Bit 0) erkennt und keine anderen Probleme (Bits 1-4) nicht gesetzt sind, löst dieser Code fälschlicherweise eine Ausnahme aus. Aber mein Code kennzeichnet Tonnen von Problemen, also ist das kein Problem für mich. Das Update (? Parse Fehler msg?) Könnte für jemanden mit groovy Chops trivial sein.

    
Generic Ratzlaugh 28.07.2017 18:47
quelle

Tags und Links