Пользовательская активность TFSBuild 2010: IBuildDetail.LastGoodBuildUri == null? - PullRequest
3 голосов
/ 19 мая 2011

Я пытаюсь использовать пользовательское действие рабочего процесса для автоматического увеличения номеров сборки на основе ранее успешной сборки.Этот метод работал с основанным на MSBuild «рабочим процессом», но я не могу заставить TFS сообщить правильную «последнюю хорошую сборку» для текущего определения сборки.

То, что я делаю, довольно просто:

IBuildDetail build = context.GetExtension<IBuildDetail>();
IBuildDetail last = build.BuildServer.GetBuild(build.BuildDefinition.LastGoodBuildUri);

Я уже выполнил успешную сборку, в результате которой мой код занял номер сборки BuildName_1.0.0.0.Но когда я пытаюсь получить эту сборку и извлечь номер версии, GetBuild жалуется, что LastGoodBuildUri равно нулю.

Используемый мной пользовательский шаблон сборки устанавливает для CompilationStatus и TestStatus значение BuildPhaseStatus.Succeeded в конце, поэтому TFS должна быть в состоянии сказать, что это хорошая сборка.Что еще мне не хватает?

1 Ответ

1 голос
/ 20 мая 2011

Поскольку вы запускаете этот код внутри пользовательского действия, вам необходимо убедиться, что:

  1. Сборка (IBuildDetail) завершена и сохранена на сервере до запланированного графика.настраиваемое действие.
  2. Экземпляр IBuildDetail или IBuildDefinition (build.BuildDefinition) обновляется для получения последних изменений с сервера.

Вы можете проверить,Ваша сборка завершена с использованием IBuildDetail.IsFinished.Если он закончен, обновите объект BuildDefinition, используя IBuildDefinition.Refresh().

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...