2012-03-10 13 views
1

"\ server \ BuildDrop \"のようなドロップ位置でTFS 2010にビルドを定義しました。ビルドをキューに入れると、ビルドは「\ server \ BuildDrop \ MyBuild \ MyBuild_20120309.1」のようなものになります。BuildDropの場所で最新のビルドを見つけるにはどうすればよいですか?

決して変更されない正確な場所にドロップされるビルドを定義したいと考えています。 ビルド定義をこのような場所に常にドロップするように変更できますか?

1)\サーバ\ BuildDrop \ MyBuild \
又は
2)\サーバ\ BuildDrop \ MyBuild \最新の\フォルダが指定されたドロップ位置のように作成されたビルドがトリガさ

答えて

2

最新のビルドの場所を知りたい場合は、ドロップ先の場所とビルド名を教えて、どれが最新のビルドであるかを簡単に判断できるようにすることをお勧めします。ドロップ先の出力を同じディレクトリにコピーする場合は、ビルドを実行するカスタムテンプレートを(デフォルトテンプレートを変更して)作成する必要があります。ビルド中に、ファイルがドロップ先の場所にコピーされた後、ドロップ先のファイルを共通の「最新の」ディレクトリにコピーするスクリプトを実行します。しかし、ビルドを実行しているときに人々が "最新"ディレクトリにあるファイルにアクセスしているという問題に簡単に直面することができます。そのため、ビルドに失敗するのはそれらのファイルを上書きできないためです。

最後に成功したビルドのドロップ先を特定する場合は、プログラムでそれを実行することもできます。以下は、私はちょうどそれを行うために書いたカスタムアクティビティの抜粋です:

 string tfsUri = "http://pathToTfsServer:8080/tfs"; 
     string projectName = "MyTfsProject"; 
     string buildDefinition = "MyTfsBuildDefinitionName"; 

     // connect to the Project and query the builds of the BuildDefinition 
     var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfsUri), new UICredentialsProvider()); 
     tfs.EnsureAuthenticated(); 
     var buildServer = tfs.GetService<IBuildServer>(); 
     var buildDetails = buildServer.QueryBuilds(projectName, buildDefinition); 

     // sort builds based on start time 
     Array.Sort(buildDetails, delegate(IBuildDetail build1, IBuildDetail build2) 
     { 
      return build1.StartTime.CompareTo(build2.StartTime); 
     }); 

     // return only the last successful build that currently exists 
     for (int i = buildDetails.Length - 1; i >= 0; i--) 
     { 
      if (buildDetails[i].Status == BuildStatus.Succeeded && buildDetails[i].IsDeleted == false) 
       return buildDetails[i]; 
     } 

あなたがチームビルド2010をカスタマイズで探しているなら、私はEwald Hoffman's tutorials on the subjectを読んで示唆しています。

0

  • MyBuild_20120309.1
  • MyBuild_20120309.2
  • MyBuild_20120310.1

フォルダの名前付け規則は、"Build Definition"_"yyyymmdd"."build number" です。ビルド番号は、1日に指定されたビルド数です。だから、ビルドをトリガするときは、ビルドドロップの場所に移動し、(命名規則に基づいて)最新のフォルダに移動し、セットアップを取得することができます。

+0

(上記のように)変更されないドロップ位置を定義する方法はありますか? – tgriffin

+0

あなたはセットアップが毎回一意のフォルダではなく指定されたフォルダに常に存在する必要があることを意味しますか? –

関連する問題