2017-02-07 10 views
2

私は、値が${WORKSPACE}/out/の1つの 'String'パラメータBuildOutDirを持つパラメータ化されたパイプラインビルドを使用しています。ビルドパラメータを使用して環境変数をパイプラインノードに渡す

私のパイプラインのスクリプトは次のとおりです。

node ('windows') { 
    stage ('Test') { 
     echo "$WORKSPACE" 
     echo "$BuildOutDir" 
     } 
} 

出力は次のとおりです。

[Pipeline] stage 
[Pipeline] { (Test) 
[Pipeline] echo 
D:\jenkins\workspace\test_pipeline 
[Pipeline] echo 
${WORKSPACE}\out\ 
[Pipeline] } 
[Pipeline] // stage 

は、ビルドパラメータとして渡される環境変数を拡張する方法はありますか?これは、パイプラインでないビルドジョブでも正しく展開されます。

+1

'Eval.me(" $ BuildOutDir ")'はうまくいくはずですが、 '\ out'を渡して' WORKSPACE'に追加できませんか? –

+0

@tim_yates ...環境変数の例として 'WORKSPACE'を使用しました。私は 'Eval.me(" $ BuildOutDir ")'を試してみましたが、 'hudson.remoting.ProxyException:org.codehaus.groovy.control.MultipleCompilationErrorsException:起動に失敗しました: Script1.groovy:1:予期しないトークン@ $ {workspace}/out/ ^ 1行目。私が間違っていることを確認していない。助けてくれてありがとう。 – newbie

答えて

3

このパイプラインを呼び出すスクリプトまたはジョブは表示されません。

ただし、おそらく間違ったstring interpolationが原因です。 Groovyでは、二重引用符を使用する必要があります。そのため、変数は補間されます(=置き換えられます)。代わりに単純引用符を使用した場合、param文字列は解釈されず、ワークスペース変数は置き換えられません。あなたの呼び出しパイプラインで

build job: 'yourPipeline', parameters: [string(name: 'BuildOutDir', value: "${WORKSPACE}")] 

build job: 'yourPipeline', parameters: [string(name: 'BuildOutDir', value: '${WORKSPACE}')] 

付:だから、基本的にはあなたが何をしたいのか、以下の行を置き換えています。繰り返しになりますが、唯一の違いは、単一引用符の代わりに二重引用符があることです。${WORKSPACE}変数 。

+0

@ Pom12 .........上記のスクリプトは親ジョブにあります(ダウンストリームジョブはありません)。私は 'Parameterized Builds' jenkinsプラグインを使用して、パラメータをトリガーしてジョブにパラメータを渡しています。 – newbie

+2

親の仕事はフリースタイルの仕事ですか?それでも、ここでのコンテキストは不可欠です。親ジョブコールのコードスニペットまたはスクリーンショットを提供してください – Pom12

関連する問題