2017-06-21 13 views
0

私はThis project is parameterizedを選択し、2つのパラメータ:queryindexを持っています。それから私は、シェルのオプションを実行することを選択する:jenkinsジョブから呼び出されたシェルスクリプトのパラメータ化されたビルドからjenkinsパラメータにアクセスする

#!/bin/sh 

curl -XPOST 'localhost:9200/_reindex?pretty' -H 'Content-Type: application/json' -d' 
{ 
    "source": { 
    "index": "{$index}", "query": "{$query}"}} 
    }, 
    "dest": { 
    "index": "myindex_output" 
    } 
} 
' 

私はそれがすべてのparamsを読んでいないことを確認し、私が取得:"type" : "index_not_found_exception", "resource.id" : "{$index}"

私はそれを正しく行う必要がありますどのように?

答えて

0

私はあなたの問題は、このライン上にあるかもしれないと思う:

"index": "{$index}", "query": "{$query}"}} 

私はあなたが望むかもしれないと思う:

"index": "$index", "query": "$query"}} 

あなたは、おそらくこのような何かを追加する必要がありますシェルスクリプトの先頭に何が起こっているのかを確認する:

echo "$query" 
echo "$index" 

完全な答えは、この宣言型のパイプラインを想定して、次のとおりです。

pipeline { 
    agent { label 'docker' } 
    parameters { 
    string(name: 'query', defaultValue: 'hot_query_value', description: 'query value') 
    string(name: 'index', defaultValue: 'hot_index_value', description: 'index value') 
    } 
    stages { 
    stage('build') { 
     steps { 
     withEnv(["query=${params.query}" ]) { 
      sh('./shell_script') 
     } 
     } 
    } 
    } 
} 

と、このシェルスクリプト:コンソールで

#!/bin/sh 

echo "in shell script" 
echo "query is: $query" 

echo "anything query or index-related in env:" 
env | egrep -i "query|index" 

出力は、次のとおりです。あなたが使用していない場合でも、

in shell script 
query is: hot_query_value 
anything query or index-related in env: 
index=hot_index_value 
ANOTHER_QUERY_ENV_VAR=hot_query_value 
query=hot_query_value 

ジェンキンスファイル(あなたはなぜそんなに嫌いですか? :D)、環境変数としてすでにパラメータが利用可能になります。

0

環境変数なので、構文の下に使用します。

$ENV:index 
$ENV:query 
関連する問題