理想的には、ビルド変数(VSTS上)を使用してAzure Web Appアプリケーションの設定を構成します。たとえば、
Powershellスクリプトを使用して公開タスクを実行します。アプリの設定を設定するには、次のスクリプトを使用できます。
param($websiteName, $appSettings)
Set-AzureWebsite -Name $websiteName -AppSettings $appSettings
次のように、これらのビルド変数をPowershellスクリプトビルドタスクに手動で渡すことができます。
PrepareAppSettings.ps1 -websiteName "MyWebApp" -appsettings @{"MyConnectionString" = $(MyConnectionString);"MyRandomService" = $(MyRandomService);"MyRandomServiceClient"=$(MyRandomServiceClient);"MyRandomServicePassword"=$(MyRandomServicePassword)}
ハッシュテーブルで各変数を明示的に指定せずにすべてのビルド変数をスクリプトに渡す方法はありますか?
ビルド変数は、環境変数としてすべてのPowerShellスクリプトに自動的に渡されます。
したがって、myVar
セクションで変数Variables
を定義した場合。スクリプトで$env:myVar
としてアクセスできます。ここで注意すべきことは、.
が_
に変換されることです。例えば変数がmyVar.config
の場合、スクリプトで$env:myVar_config
としてアクセスします。
使用可能な変数には、ブランチ名、ビルド番号などの変数も含まれます。使用可能な変数をすべて表示するには、ダミーのビルド/リリース定義を実行し、インラインタイプでPowerShellタスクを追加してGet-ChildItem Env:
を実行します。これにより、使用可能なすべての環境変数が表示され、カスタム定義の変数がすべて表示されます。
詳細はこちら こちら
ここで言及する価値があるのは、秘密変数が環境変数(PSの_env:
_)としてスクリプトに渡されないことです。そのため、スクリプトのパラメーターとして渡された場合のみアクセス可能です。 -MyPassword $(Password)
。 https://docs.Microsoft.com/en-us/vsts/pipelines/build/variables?view=vsts&tabs=batch#secret-variables を参照してください
変数は、ビルドの開始時にPowerShellスクリプトに既に渡されています。あなたの質問を正しく理解したら、これらの変数を次のように1つずつ指定するのではなく、一緒に使用する必要があります。
PrepareAppSettings.ps1 -websiteName "MyWebApp" -appsettings $(AllVariables)
そして、これを行う方法はありません。
PowerShellスクリプトに渡される文字列を減らしたい場合は、変数を次のように設定できます。
変数名:MyRandomService |値: "MyRandomService" = xxxxxxxx
次に、渡された変数名でPowerShellスクリプトを呼び出すだけです。