2017-08-09 9 views
0

現在、PowerShellではなくNode.jsに基づいているため、カスタムTFSビルドタスクを書き直しています。しかし、私は以下の問題に遭遇しました:
既存のタスクでは、ユーザーは、タスク結果を環境変数に書き込むかどうかを決定できます。これは、タスクの結果が何であれ、彼が仕事をするスクリプトをいくつか追加したい場合に便利です。タスクが終了した後Node.jsのタスク間で情報を共有する方法TFSのビルドタスク?

[Environment]::SetEnvironmentVariable($variableName, "The Value to Set", "User") 

、それは次のようにPowerShellで例えば、読み出すことができます:PowerShellでは私はこのような「ユーザーレベルの環境変数」を設定することにより、ことが達成

$variable = [Environment]::GetEnvironmentVariable($variableName,"User") 

しかし、私はNode.jsのTaskで同じことを達成する方法を見つけることができませんでした。 process.env["variable"]で設定した場合、実行される以下のタスクのいずれでも使用できなくなります。 https://github.com/Microsoft/vsts-task-lib/blob/master/node/docs/vsts-task-lib.md#tasksetTaskVariable

をしかし今、私は、その後のタスクでこの変数にアクセスする方法がわからない:私はVSTS TASKLIBを提供していますsetTaskVariable方法つまずいたいくつか検索した後

。 tasklib(PowerShellまたはNodeのいずれか)をベースにしたカスタムタスクを使用する場合はgetTaskVariableを使用できますが、単純な(PowerShellの場合は)完全なタスクを記述する必要がある場合は、 )スクリプトが行います。

このTaskVariableを次のスクリプトで取得する "簡単な"方法がありますか、それとも "フルフリッチ"タスクのためのものですか?私の仕事に従うスクリプトに情報を渡すだけで、他にどのようなオプションがありますか?

答えて

1

単純な方法では、Task Logging commands##vso[task.setvariable]value(例:Console.log(‘##vso[task.setvariable variable=testvar;]testvalue’)を使用しているため、ビルド/リリース定義で定義されている一般的な変数として使用できます。 (例えば、タスクの引数:$(testvar)

一方、task.setVariableメソッドも同じことができます。 (task.setTaskVariableは現在のタスクの後続のステップに使用されます)

+0

ありがとう、それは完全に働いています(私はsetVariableが欠けて、ちょうどsetTaskVariableを見ました...)。 setVariableを使って$(testVar)を介してTaskConfigurationにアクセスするか、$ env:testVar :-)を介してPowerShellスクリプトに直接アクセスできます – huserben

関連する問題