2017-12-03 24 views
0

基本的にファイルからシェルにプロパティを渡そうとしています。パイプラインのファイルへの引数の受け渡し

私はここで、ワークスペース

IMAGE_NAME='Docker-image' 

IMAGE_VERIONS='Docker-1.3.5' 

で次の内容のファイル "docker_info" を持っているが、私のパイプラインスクリプトです:

node 
{ 

load "${WORKSPACE}/docker_info" 

sh " echo ${IMAGE_NAME}" // here getting expected output: Docker-image 

stage('Executing SHELL SCRIPING TO CHECK DOCKER IMAGE') 

     sh ''' 

     echo "$DOCKER_IMAGE" 

      if [ -z "${IMAGE_NAME}" ]  //(also tried "$IMAGE_NAME") 
      then 
      echo "Docker image not found." 
      exit 0 
      fi 

      echo "${IMAGE_NAME}:started pushing image" 

     ''' 
} 

OUTPUT:

[Test_BUILD_PIPELINE] Running shell script 

+ echo Docker-image 

Docker-image  

**Entering stage Executing SHELL SCRIPTING TO CHECK DOCKER IMAGE** 

Proceeding 

[Pipeline] sh 

[Test_BUILD_PIPELINE] Running shell script 

+ echo '' 
+ '[' -z '' ']' 

+ echo 'Docker image not found. Skip pushing Docker image' 

Docker image not found. Skip pushing Docker image 

+ exit 0 

親切後に注意してくださいステージに入る私は期待していないだろうエコー "

私はいくつかの方法で試してみましたが、それはうまくいきませんでした。

+0

二重引用符と一重引用符の違いのようです。 –

+0

シェルの下で一重引用符echo '{IMAGE_NAME}'に置き換えても、動作しませんでした。 –

+0

一重引用符で置き換えようとしましたが、シェルの下にある '{IMAGE_NAME}'をエコーし​​てプロパティファイルの値を一重引用符に置き換えてもうまくいきませんでした。私がsh "echo $ {IMAGE_NAME}"を使用して期待される出力を得たときの興味深い点を教えてください。 $ {IMAGE_NAME} "'' ' - エコーをエコーし​​ます。おそらく、ファイルから内容を読み取ることができません。パイプラインでシェルコマンドのグループを実行できるようにするための方法はありますか?何かアドバイス? –

答えて

0

sh """ 

    echo '$DOCKER_IMAGE' 

     if [ -z '$IMAGE_NAME' ] 
     then 
     echo 'Docker image not found.' 
     exit 0 
     fi 

     echo '$IMAGE_NAME:started pushing image' 

    """ 
+0

パーフェクト、それは働いた。一方、私はまた別の解決策を見つけました。私はそれを共有させてください。 –

1

のsh ''」

を試してみてください。

docker_info/[-z "$のIMAGE_NAME"]

場合は、次に

出口0

Fiの

を "ドッカー画像が見つかりません" エコー/ TO /パス/

echo "$ IMAGE_NAME:プッシュイメージを開始しました"

'' '

関連する問題