TFS 2010の履歴ビルドのドロップフォルダをどのように変更しますか
-
10-12-2019 - |
質問
私たちのビルドドロップ位置に使用されてきた私たちのサーバーは引退しています。新しいサーバーを使用するように現在のビルド定義を変更する方法を知っていますが、すでに完了したビルドの履歴レコードをどのように変更しますか。私は過去のビルドを開き、「削除フォルダを開く」をクリックして新しいサーバーに連れて行かれます。古いビルドを新しいサーバーに手動でコピーします。
解決
次のサンプルが機能しているようです。
using System;
using System.Collections.Generic;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;
namespace ChangeDropLocation
{
class Program
{
static void Main()
{
TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://MyServer:8080/tfs/Collection"));
var buildService = (IBuildServer)teamProjectCollection.GetService(typeof(IBuildServer));
IBuildDetail buildDetail = buildService.GetBuild(new Uri("vstfs:///Build/Build/1506"));
buildDetail.DropLocation ="\\somewhere";
var buildDetails = new List<IBuildDetail>();
buildDetails.Add(buildDetail);
buildService.SaveBuilds(buildDetails.ToArray());
}
}
}
.
あなたが考慮に入れるべきことの1つは、あなたがおそらくビルド情報を更新するための特権を欠いているということです。私の最初の試みでは、プロジェクト管理者ですが、次の手順を実行しました。
TF215106:アクセスが拒否されました。Domain \ Usernameのアップデートビルドが必要です チームにおけるビルド定義MyBuildDefinitionのための情報権限 MyTeamProjectをプロジェクトしてアクションを実行します。詳細については、 Team Foundation Server管理者に連絡してください。
これを克服するために、TeamExplorerの「ビルド」を右クリックして「セキュリティ...」を選択してください。
他のヒント
これを行うためのツールを知りません。たぶんTFS PowerShellコマンドがあるかもしれませんが、私はあなたができることを考えることができると思います - もちろんあなたが適切な注意を払った後 - SQL DBを直接更新してください。
ドロップ位置へのマッピングは、TBL_BUILDのコレクションSQL DBに格納されています。
[TBL_BUILD] から[ドロップロケーション]、[Loglocation]を選択します。
倉庫に影響があるかどうかはわかりません。最初にそれをチェックしたいかもしれません。
私はマイクロソフトは一般的にこのようなもののために直接SQLを操作することをお勧めします。代わりにTFS APIを使用することができ、これは比較的安全なアプローチです。