私は現在、Jenkins / Hudsonを使用してPerlスクリプトをトリガーしていますが、適切な例外が何であるかを見つけるのに苦労しています。コンソールでは、perlスクリプトエラーが想定どおりに表示されますが、JenkinsはBuildSuccessで終了します。
私はdieコマンドとexit1のシステム印刷から多くのことを試しましたが、それでもそれをキャッチしていないようです。
どんな助けでも素晴らしいでしょう!よろしくお願いします!
私は現在、Jenkins / Hudsonを使用してPerlスクリプトをトリガーしていますが、適切な例外が何であるかを見つけるのに苦労しています。コンソールでは、perlスクリプトエラーが想定どおりに表示されますが、JenkinsはBuildSuccessで終了します。
私はdieコマンドとexit1のシステム印刷から多くのことを試しましたが、それでもそれをキャッチしていないようです。
どんな助けでも素晴らしいでしょう!よろしくお願いします!
Jenkinsは、ゼロ以外で終了するビルドステップが失敗したと見なします。それは十分なはずですdie()
たぶん、perlの後にゼロで終了する別のシェルコマンドがありますか?Jenkinsは、個々のプロセスからのすべての終了コードを確認するわけではありません。Jenkinsは、ビルドステップ領域に入力したスクリプトを一時ファイルに配置し、一時ファイルを呼び出すだけ/bin/sh
です。スクリプトが失敗したときにゼロ以外でスクリプトを終了させるのはあなた次第です。
これを行う最も簡単な方法は、スクリプトをで始めることです#!/bin/sh -xe
。シェルのマニュアルページを調べると、-e
プロセスがゼロ以外で終了するたびにシェルがスクリプトを停止するオプションが表示されます。
LinuxとWindowsでJenkinsジョブを実行しているときに、これに遭遇しました。Linuxのリターンコードは0から255の間でなければならないことを(難しい方法で)学びました。リターンコードがこの範囲外の場合、リターンコードは0に設定されます。Perlのドキュメントには、die()のリターンコードは次のように記載されています。ゼロ以外ですが、もう具体的ではありません。したがって、die()呼び出しが0から255の間にないゼロ以外の戻りコードを生成する場合、Linuxはそれをゼロとして扱います。
TAP :: Harness::JUnitを使用しました。TAP出力をXMLドキュメントにラップし、XMLをSCPでHudsonサーバーに配信してHudsonが消費できるようにします。
すべてのシェルコマンドを正しく実行するためにhudsonコマンドを取得するには少し苦労しましたが、それはつまり、すべてのパスを正しく設定するために2、3回試行することを意味します。