6

TFSの単一のブランチ(メインなど)に基づいて実行されるビルド定義がいくつかあります。

(どういうわけか)TFSにクエリを実行して、指定した特定のチェンジセット番号を含むすべてのビルドを検索し、TFSに含まれるビルドの名前の文字列のリストを返します。あらゆる種類のアプリ(VS拡張機能、CLIアプリ、WinFormsなど)で動作します。

注:これは「plzがコードを教えてください」というリクエストではありません。私はそれをひづめにして、これに真剣に取り組むつもりです。データベースまたはSDKのクエリ方法に関するドキュメントへのポインタ、またはビルドのクエリ方法の例。探し始める場所は非常に役に立ちます。ありがとう。

4

2 に答える 2

9

次のスニペットは、コレクションのすべてのチーム プロジェクトのすべてのビルド定義をクロールし、すべてのビルドで入力変更セット番号への関連付けをチェックします。

using System;
using System.Linq;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;

namespace FindChangesetInBuild
{
    class Program
    {
        static void Main(string[] args)
        {
            TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfs:8080/tfs/collectionName"));

            var versionControl = teamProjectCollection.GetService<VersionControlServer>();
            var buildService = (IBuildServer)teamProjectCollection.GetService(typeof(IBuildServer));

            var teamProjects = versionControl.GetAllTeamProjects(true);
            foreach (var teamProject in teamProjects)
            {
                var buildDefinitions = buildService.QueryBuildDefinitions(teamProject.Name);
                foreach (var buildDefinition in buildDefinitions)
                {
                    var builds = buildService.QueryBuilds(buildDefinition);
                    foreach (var buildDetail in builds)
                    {
                        var changesets = InformationNodeConverters.GetAssociatedChangesets(buildDetail);
                        if (changesets.Any(changesetSummary => changesetSummary.ChangesetId == Convert.ToInt32(args[0])))
                        {
                            Console.WriteLine("Changeset was build in "+buildDetail.BuildNumber);
                        }
                    }
                }
            }
        }
    }
}

言うまでもなく、これは総当たり攻撃です。のリストを絞り込んだり、特定のものに焦点を当てたりする
と、コードをさらに絞り込むことができます。 いずれにせよ、上記がそのまま役立つとはほとんど想像できません。(明らかに) MSDNとは別に、TFS-SDK の優れたリソースは、Shai Raiten のブログです。Build-Specic の例については、おそらく興味深い SO 投稿について、こちらこちらも確認してください。buildDefinitionteamProjects


于 2012-04-05T11:31:36.890 に答える
2

この小さな DB クエリを TFS 2010 で使用して、90264 を変更セット ID に置き換えるだけです。

USE Tfs_Warehouse
go
SELECT BuildName 
FROM DimBuild
   INNER JOIN FactBuildChangeset
   ON DimBuild.BuildSK = FactBuildChangeset.BuildSK
WHERE FactBuildChangeset.ChangesetSK = 90264
于 2013-02-07T23:16:43.547 に答える