2017-12-19 19 views
0

TFSを使用する同じWebアプリケーションを2つの異なる場所(West、Central)に配備したいと考えています。このため、私は両方の場所に同時にRun on multiple agents in parallelオプションを使用してフェーズを実行しようとしています。TFS:同じアプリケーションを複数の地理的サイトに展開する

enter image description here

次のサンプルでは、​​ここに私の質問に一つだけステップDeploy Website files

enter image description here

が含まれています。

multiplierに基づいて$(WebsiteServer)変数に異なる値を設定するにはどうすればよいですか?

環境内で複数の変数を設定しようとしました。その後、

enter image description here

そして$($(Location).WebsiteServer))のようにそれらを使用しますが、それは正しく展開されません。

ハードコードされた値のリリースタイムベースで変数を作成し、それらの変数を代わりに使用するカスタムタスクを作成することを考えています。しかし、それはハッキーのようです。

これを解決する方法がありますか?

答えて

1

あなたの乗数をWebsiteServerにして、値をカンマ区切りのサーバリストにします。

+0

このサンプルではうまくいくが、実際のシナリオでは、Westに展開するサービスアカウントがセントラルに展開するサービスアカウントとは異なる(私はそれを変更できず、単一のアカウントを使用する)ので、リリース時にこれらの変数を計算できるようにする必要があります。 –

+0

次に、2つの異なる環境を使用してください。 –

+0

それはまったく助けにならない –

0

次のようにいくつかの変数を追加できます。 enter image description here

WebsiteServer、UserおよびPass変数は、WebsiteServerのIP、ユーザー名、およびパスワードを保存するための中間変数です。 以下のように環境を構成できます。 enter image description here

あなたはWebsiteServer、ユーザーの値を変更し、「## VSO [task.setvariable変数= variableNameに] variableValue」$などのネストされたvarialbes、から(コマンドをロギングすることで変数を渡すためにPowerShellのタスクを追加することができます$(場所).WebsiteServer)あなたは、次のPowerShellスクリプトを参照してください可能性があり

:。

enter image description here

スクリプト:

Write-Host "##vso[task.setvariable variable=WebsiteServer]$($(Location).WebsiteServer)" 
Write-Host "##vso[task.setvariable variable=User]$($(Location).User)" 
Write-Host "##vso[task.setvariable variable=Pass]$($(Location).Pass)" 

次のような[ファイルをコピー]タスクでWebsiteServer、UserおよびPass変数を使用できます。 enter image description here

+0

あなたの答えをありがとう、私はカスタムタスクとhttps://github.com/Microsoft/vsts-task-libの 'Get-VstsTaskVariableInfo'関数を使って同様のことをします。私は代わりにプレースホルダー変数を定義する必要がないので、これはより洗練されていると思います。それらを作成し、乗数に値の基底を代入します。また、私は秘密変数を非常にうまく制御しているので、 'issecret = true'でそれらを作ることもできます。誰かが完全なスクリプトを必要とするなら、私は答えとしてここに投稿することができます。 –

関連する問題