2

ラボ管理と標準環境でセキュリティの問題が発生しています。

ドメイン「DevDomain」に TFS2012 update 2 をインストールしました。同じコレクション「CollectionA」のビルドコントローラー、ビルドエージェント、およびテストコントローラーの両方がインストールされている「DevDomain」にも別のビルド/ラボマシンがあります。

自動ビルドは完璧に機能します。

「DevDomain」と「TestDomain」に展開対象の PC があります (詳細は後述)。

これを次のレベルに進めるために、TFS ビルド エージェントで構築されたソフトウェアをテスト リグ マシンに自動的に展開したいと考えています。具体的には、展開スクリプトで既存の製品をアンインストールし、更新されたインストーラーをターゲット PC にコピーしてからインストールしたいと考えています。

私の最初の試みは、「DevDomain」で標準環境を定義し、同じドメイン内で動作するラボ ビルドの展開部分を取得することでした。

これはうまくいきました。これが私がしたことです。

自動ビルド (DefaultTemplate.xaml プロセスを使用) により、展開に使用する MSI ファイルと、展開を調整するために実行する PowerShell スクリプトが作成されます。(スクリプトは、msiexec を介して MSI を実行してアンインストールし、新しいバージョンをローカルにコピーしてから、msiexec を介して実行して新しいコピーをインストールしようとするだけです)。自動化されたビルドは、これらの両方のアーティファクトを喜んで作成し、定義された TFS ドロップ シェアに配置します。

これを行うために、私は持っています:

  • 1 台のマシン (デスクトップ クライアント ロール) で新しい標準ラボ環境を作成
    • ラボ マネージャーはエージェントをこの PC に正常に展開しました
    • エージェントはインタラクティブに実行されており、オンラインを示しています。
  • LabDefaultTemplate.11.xaml ワークフローを使用して新しいビルド定義を作成しました。
    • 構成で上記のラボを参照
    • 構成で自動ビルドの最新の出力を参照しました
    • ビルド出力の PowerShell スクリプトを指定しました ($(BuildLocation) マクロを使用)。

ビルドのこの [デプロイ] タブでは、"デスクトップ クライアント" ロールを使用してラボのマシンで実行する次のスクリプトを指定します。

cmd /c powershell.exe "$(BuildLocation)\DeployGuiToLabWorkstation.ps1" "$(BuildLocation)"

これは機能します。

テスト エージェントをインタラクティブなプロセスとして実行するように構成していることに注意してください。展開が機能した後の最終的な目的は、これらのラボでコード化された UI テストを実行することです。

問題は、別のドメインのマシンに展開しようとしたときに発生します 。これをより現実的なものにするために、別のドメインにある QA マシン用の標準的なラボ環境を定義する必要があります。「テストドメイン」。

ドメイン「TestDomain」はドメイン「DevDomain」と信頼関係があります。「DevDomain」と「TestDomain」の間に相互信頼はありません

ここでも、テスト マネージャー ラボ センターがこの OK を定義し、エージェントをデプロイしました。エージェントは、自分自身をオンラインでテスト コントローラーに報告しました。

新しい標準環境 (「TestDomain」上) を参照するようにラボ ビルドを変更すると、デプロイはこのエラーで失敗します。

Exception Message: Team Foundation Server could not complete the deployment task for
machine '10.7.70.71', script 'cmd' and arguments '/c copy \\*buildmachine*
\TFS_Drop\...\DeployGuiToWorkstation.ps1 C:\GuiDeploy'. (type LabDeploymentProcessException)

これを診断するために、ラボのデプロイ スクリプトを次のように変更しました。

"cmd /c powershell whoami"

また、ログによると、プロセスはテスト エージェント用に指定されたラボ環境のアカウントではなく、"nt authority\system" として実行されています。

これはスクリプト エラーを説明しています。ターゲット PC の PowerShell は TFS ドロップ共有にアクセスできませんが、このアカウントはローカル マシン アカウントであるため、「TestDomain」の PC のマシン アカウントに、「DevDomain」のマシンの共有と NTFS フォルダーへのアクセス許可を付与することはできません。

では、「devDomain」共有/ファイルシステムのアクセス許可を「TestDomain」のマシンから「System」サービス アカウントに付与するにはどうすればよいでしょうか。

また

テスト エージェント (ローカル マシンの管理者として実行) に、このマシンのシステム コンテキストではなく、独自のアカウント コンテキストで展開スクリプトを実行させるにはどうすればよいですか?

私は困惑しています!


編集: テスト エージェントの UI は指定したアカウントで実行されているようですが、そのように構成すると、サービス "Visual Studio Lab Agent Service" がローカル システムとして実行されたままになり、サービスでこれを手動で変更できます。適切なドメイン アカウントとそのアカウントが PS "whoami" の結果に反映されます。

現在、「DevDomain」アカウントをミラーリングするサービスに TestDomain アカウントを使用して調査しているため、共有権限を適切に設定できます。


これはTFS ラボ管理展開スクリプトと同様のシナリオですが、テストとテスト設定を使用して回避されたため、特に展開部分の解決が必要であり、質問する価値があると思いました。

4

5 に答える 5

2

上記の Pete Stensønes のソリューションは、私の条件で機能します。

しかし、私のシナリオは、ワークグループに標準環境をセットアップすることですが、tfs は別のドメインにあります。参考までに私の手順をリストしてください: 次のサーバーにローカル アカウントを作成します: ローカル ラボ サービス アカウント - tfslab

  1. tfs テスト コントローラー サーバー: ローカル tfslab アカウントを作成します。また、テスト コントローラー構成コンソールでラボ サービス アカウントとして tfslab を構成します。
  2. tfs test agent server : ローカル tfslab アカウントを作成し、tfslab をローカル管理者グループに追加します。また、Visual Studio Test Agent サービスと Visual Studio Lab Agent サービスを tfslab として実行するように更新します。
  3. tfs drop folder server : ローカル tfslab アカウントを作成します。そして、共有読み取り権限を tfs ドロップ フォルダーに追加します。
于 2013-07-22T02:48:31.813 に答える
1

OK、私は最終的に、ネットワーク サポート担当者の助けを借りてこれを解決しました。

「TestDomain」のエージェントを対話型として構成する必要があります (次のステップはコード化された UI テストを実行するためです)。これを行うときは、通信用のテスト ラボ アカウントを指定しますが、マシンまたはドメイン アカウント (「TestDomain 内」) を指定します。 ") エージェント アカウント (ローカル マシンの管理者グループのメンバー) として、"DevDomain" の MTM ラボ プロセスを "TestDomain" のテスト マシンに正常に展開および構成できます。

ただし、これにより、展開スクリプトを実際に実行するプロセスであるローカル システムとして実行されている「testDomain」のターゲット マシンに「Visual Studio Lab Agent Service」が残ります。

テスト マシンの「テスト エージェント構成」ツールで、エージェントをインタラクティブに実行しながらこれを変更できる順列を見つけることができませんでしたが、サービス コントロール パネル アプレットを使用して、サービスのログオン情報を変更するだけで済みます。

私がしたことは:

  • 「TestDomain」ターゲット マシンで「テスト エージェント」 ローカル アカウントを作成し、それを「TestDomain」ターゲット マシンのローカル管理者グループに追加します。

  • 次に、 TFS ドロップ共有をホストしているマシンに同じ名前とパスワードでマシンローカル アカウントを作成して、これをミラーリングしました。

  • 次に、そのローカル アカウントに共有とファイル システムへの読み取りアクセスを許可しました。

"devDomain" TFS サーバーがビルドを開始すると、スクリプトの実行はローカルの "Visual Studio Lab Agent Service" によって実行されます。これは、新しいローカルの"test agent"アカウントのコンテキストで、マシン上に一致するローカル アカウントがあるためです。共有をホストすると、アクセス許可が付与され、共有が読み取り可能になり、スクリプトを実行できるようになります。

于 2013-05-17T10:05:12.683 に答える
1

ラボ サービス アカウントを使用するようにテスト コントローラーを構成しましたか?

そうでない場合は、これを試してください:

ここに画像の説明を入力

適切な権限を持つアカウントを使用してください。

このアカウントは、ビルドのドロップ場所へのアクセスに使用されます。

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\QTController.exe.config

「UseLabServiceAccountToAccessBuildDirectory」を検索します。

于 2013-05-15T13:22:14.533 に答える