SYSの出口を呼び出していないため、私は@dmeisterでオプションを同意しているが、パイプラインコード(Jenkinsfile)と私が提案しますtry/catchし、エラーを解析します。 - グルーヴィーなグルーヴィーな純粋主義者に
try {
sh 'pylint --output-format=parseable my_module'
} catch (pylint_rc) {
// pylint_rc will be of the form
// "hudson.AbortException: script returned exit code NN"
// where NN is 1-63 and represents bit field;
// bits 0-4 indicate lint-ish issues in analyzed code,
// bit 5 indicates pylint usage error
echo "pylint_rc= \'$pylint_rc\'"
String rc = "$pylint_rc"
String code = rc.split()[5]
echo "Isolated return code string value $code"
int value = code.toInteger()
// catastrophic/crash error returns a 1; else there is a pylint return code
int error_bits_code = value & 0x20
int lint_bits_code = value & 0x1f
echo "pylint error_bits_code=$error_bits_code ; lint_bits_code=$lint_bits_code"
if ((value == 1) || (error_bits_code != 0)) {
currentBuild.result = "FAILURE"
throw pylint_rc
}
}
謝罪:あなただけのpylintは、使用方法のエラーを報告するかどうか、または致命的なは失敗があったかどうか、(Pylintのドキュメントを参照してください)pylintからステータスビットを取得しているかどうかを判断することができますこの方法私のことではないので、これを改善できると確信しています。私に知らせてください。既知の穴が1つあります:もしpylintが "fatal"型のエラー(ビット0)しか検出せず、他の種類の問題(ビット1〜4は設定されていません)がない場合、このコードは間違って例外をスローします。しかし、私のコードでは、問題がたくさんあるので、それは私には問題ではありません。修正(?解析エラーmsg?)は、面倒なチョップを持つ人にとっては些細かもしれません。
まっすぐ。私はlint.pyをデバッグし、sysstex(self.linter.msgstatus)という呼び出しについて、msgstatusがコンテキスト内で見つからなかったことを知りました。これを0に置き換えるとビルドが成功するようになりました。 – Gobliins