Как я могу найти последнюю сборку в локации BuildDrop? - PullRequest
1 голос
/ 10 марта 2012

Я определил сборку в TFS 2010 с местом размещения, например "\ server \ BuildDrop \".Когда я ставлю сборку в очередь, она сбрасывает сборку во что-то вроде "\ server \ BuildDrop \ MyBuild \ MyBuild_20120309.1".

Я бы хотел иметь возможность определить сборку, которая выпадет в том месте, которое никогда не изменится.Могу ли я изменить определение сборки, чтобы оно всегда сбрасывалось в таком месте?

1) \ server \ BuildDrop \ MyBuild \
или
2) \ server \ BuildDrop \ MyBuild \ Latest \

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

Если люди хотят знать, где найти последние сборки, я думаю, что лучше всего рассказать им, где находится место сброса и как называются сборки, чтобы они могли легко определить, какая из них является самой последней. Если вы хотите скопировать вывод местоположения отбрасывания в тот же каталог, вам нужно будет создать собственный шаблон (путем изменения шаблона по умолчанию), который будет запускать вашу сборку. Во время моей сборки, после того, как файлы скопированы в место размещения, я выполняю сценарий для копирования файлов из места размещения в общий каталог «Последние». Однако вы можете легко столкнуться с проблемами, когда люди обращаются к файлам в каталоге «Latest» во время выполнения сборки, и поэтому сборка завершается неудачно, поскольку она не может перезаписать эти файлы.

Если вы хотите определить расположение последней успешной сборки, вы также можете сделать это программно. Ниже приведен фрагмент пользовательского действия, которое я написал для этого:

        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];
        }

Если вы хотите настроить Team Build 2010, то я предлагаю прочитать учебные пособия Эвальда Хоффмана по теме .

0 голосов
/ 10 марта 2012

Когда запускается сборка, папка будет создана в указанном месте перетаскивания, как

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

Соглашение о присвоении имен папкам: "Build Definition"_"yyyymmdd"."build number" номер сборки - это количество сборок, данных за день. Поэтому, когда вы запускаете сборку, вы можете перейти в папку сброса сборки и просто перейти к последней папке (в соответствии с соглашением об именах) и получить настройки.

...