web-dev-qa-db-ja.com

VSTS:ビルド/リリース変数をPowershellスクリプトタスクに渡す

理想的には、ビルド変数(VSTS上)を使用してAzure Web Appアプリケーションの設定を構成します。たとえば、

VSTS Build

Powershellスクリプトを使用して公開タスクを実行します。アプリの設定を設定するには、次のスクリプトを使用できます。

param($websiteName, $appSettings)
Set-AzureWebsite -Name $websiteName -AppSettings $appSettings

次のように、これらのビルド変数をPowershellスクリプトビルドタスクに手動で渡すことができます。

PrepareAppSettings.ps1 -websiteName "MyWebApp" -appsettings @{"MyConnectionString" = $(MyConnectionString);"MyRandomService" = $(MyRandomService);"MyRandomServiceClient"=$(MyRandomServiceClient);"MyRandomServicePassword"=$(MyRandomServicePassword)}

ハッシュテーブルで各変数を明示的に指定せずにすべてのビルド変数をスクリプトに渡す方法はありますか?

37
Dave New

ビルド変数は、環境変数としてすべてのPowerShellスクリプトに自動的に渡されます。

したがって、myVarセクションで変数Variablesを定義した場合。スクリプトで$env:myVarとしてアクセスできます。ここで注意すべきことは、._に変換されることです。例えば変数がmyVar.configの場合、スクリプトで$env:myVar_configとしてアクセスします。

使用可能な変数には、ブランチ名、ビルド番号などの変数も含まれます。使用可能な変数をすべて表示するには、ダミーのビルド/リリース定義を実行し、インラインタイプでPowerShellタスクを追加してGet-ChildItem Env:を実行します。これにより、使用可能なすべての環境変数が表示され、カスタム定義の変数がすべて表示されます。

詳細はこちら こちら

75
Harshil Lodhi

ここで言及する価値があるのは、秘密変数が環境変数(PSの_env:_)としてスクリプトに渡されないことです。そのため、スクリプトのパラメーターとして渡された場合のみアクセス可能です。 -MyPassword $(Password)https://docs.Microsoft.com/en-us/vsts/pipelines/build/variables?view=vsts&tabs=batch#secret-variables を参照してください

6
Artyom

変数は、ビルドの開始時にPowerShellスクリプトに既に渡されています。あなたの質問を正しく理解したら、これらの変数を次のように1つずつ指定するのではなく、一緒に使用する必要があります。

PrepareAppSettings.ps1 -websiteName "MyWebApp" -appsettings $(AllVariables)

そして、これを行う方法はありません。

PowerShellスクリプトに渡される文字列を減らしたい場合は、変数を次のように設定できます。

変数名:MyRandomService |値: "MyRandomService" = xxxxxxxx

次に、渡された変数名でPowerShellスクリプトを呼び出すだけです。

3