2017-10-27 4 views
0

新しいjenkins宣言的パイプライン構文を使用して、shスクリプトの実行の戻り状況をテストしたいと思います。スクリプトステップを使用せずに可能ですか?jenkins宣言的パイプラインの新しい構文でshスクリプトの戻り状態をテストする方法

スクリプトのパイプライン(作業):

... 
stage ('Check url') { 
    node { 
    timeout(15) { 
     waitUntil { 
     sleep 20 
     def r = sh script: "wget -q ${CHECK_URL} -O /dev/null", returnStatus: true 
     return (r == 0); 
     } 
    } 
    } 
} 

宣言パイプライン(試す):

... 
     stage('Check url'){ 
     steps { 
      timeout(15) { 
       waitUntil { 
        sleep 20 
        sh script: "wget -q ${CHECK_URL} -O /dev/null", returnStatus: true == 0 
       } 
      } 
     } 
    } 

ログ:java.lang.ClassCastExceptionが:身体の戻り値はnullがあるので

+0

最初の例のように 'script {}'にラップして比較を行うことなくこれを行う方法はないと思います。シェルが整数だけを返すようにする方法はなく、その整数をスクリプトに入れずにブール値に強制する方法はありません。 –

+0

私は同意します。もう少し論理があるものはすべて 'script'ブロックが必要です。それが存在する理由です。 – StephenKing

答えて

1

ブールれていませんスクリプトブロックなしでは不可能です。

... 
stage('Check url'){ 
     steps { 
      script { 
       timeout(15) { 
        waitUntil { 
         sleep 20 
         def r = sh script: "wget -q ${CHECK_URL} -O /dev/null", returnStatus: true 
         return r == 0 
        } 
       } 
      } 
     } 
    } 
関連する問題