Jenkinsはスクリプト内のエラーをどのようにキャッチしますか?

Jenkinsはスクリプト内のエラーをどのようにキャッチしますか?

私がしたいことは一度source....コマンドを実行し、エラーが発生したら一時ファイルに入れたいものです。いくつかの方法を試しましたが、成功しませんでした。

    def responseValue = sh(script: """#!/bin/bash
    set +x
    source /etc/runScript.sh> /dev/null 2>&1 >temp.txt
    echo \${${someVar}}
    """, returnStdout: true)
     def foundValue =  readFile(file: "temp.txt").trim()
     echo "value is ${foundValue}"
     //also tried source /etc/runScript.sh  2>&1> /dev/null >temp.txt

答え1

リダイレクトの順序が重要です。

source /etc/runScript.sh> /dev/null 2>&1 >temp.txt

>/dev/null標準出力をビットバケットにリダイレクトします。

2>&1標準エラーを標準出力と同じ位置とビットバケットにリダイレクトします。

>temp.txt標準出力をファイルにリダイレクトtemp.txtし、標準エラーをビットバケットにリダイレクトします。

目標を達成する安全な方法は、各ストリームを別のファイルに保存することです。

source /etc/runScript.sh >/dev/null 2>temp.txt

標準出力を送信し、/dev/null標準エラーをtemp.txt

関連情報