Jenkinsでシェルスクリプトを使用しています。このスクリプトは、ある時点で、curlを使用してサーバーにファイルをアップロードします。出力curlが生成するものを確認するだけでなく、それが期待する出力であるかどうかも確認したいと思います。そうでない場合は、シェルエラーコードを> 0に設定して、スクリプトが失敗したことをJenkinsが認識できるようにします。
最初にを使用してみcurl -f
ましたが、アップロードが失敗するとすぐにパイプが切断され、エラー出力がクライアントに届きません。それから私はこのようなことを試みました:
curl ...params... | tee /dev/tty | \
xargs -I{} test "Expected output string" = '{}'
これは通常のSSHシェルから機能しますが、Jenkinsコンソールの出力には次のように表示されます。
tee: /dev/tty: No such device or address
Jenkinsが通常のSSHシェルを使用してスレーブと通信していると思ったので、これがなぜなのかわかりません。いずれにせよ、xargs + test全体が、ちょっとしたハックだと思います。
Jenkinsでこれを実現して、出力を確認し、特定の文字列と一致するかどうかをテストする方法はありますか?