Как я могу реализовать конвейер сборки с TFS - PullRequest
5 голосов
/ 21 июля 2009

Я пытаюсь реализовать конвейер сборки, используя TFS.

У нас уже есть TFS, строящий наши проекты после каждого коммита. Но сборка занимает слишком много времени, поэтому мы хотели бы разбить сборку на два этапа. Литература по непрерывной интеграции предлагает эту технику.

Так что я ищу что-то, чтобы сделать следующее.

  • Разработчик проверяет свой исходный код.
  • TFS автоматически запускает сборку для компиляции кода и запуска некоторых базовых тестов (у нас это уже есть). Разработчик получает быстрый отзыв о том, что его изменения не сломали что-то очевидное.
  • Далее, если сборка прошла успешно, запускается новая задача / сборка TFS, которая берет артефакты с предыдущего этапа и выполняет еще несколько трудоемких тестов.

Есть идеи, как это реализовать?

Ответы [ 3 ]

2 голосов
/ 21 июля 2009

1) Написать сервис, который прослушивает событие BuildCompleted. Пример кода веб-службы IIS . Пример кода WCF для собственного размещения . В вашем обработчике событий либо вызовите API сборки TFS , чтобы запустить отдельный тип сборки, который определяет дополнительные задачи, либо просто выполните собственный код прямо здесь.

2) Зарегистрируйте службу в TFS, добавив фильтр на стороне сервера при успешных сборках .

1 голос
/ 13 сентября 2011

В настоящее время мы делаем это, используя цель <AfterEndToEndIteration> в MSBuild и <Exec> ing TfsBuild.exe.

<Target Name="AfterEndToEndIteration">
  <PropertyGroup>
    <TfsBuildExecutable>C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\TfsBuild.exe</TfsBuildExecutable>
    <CommandToTriggerNextStage>&quot;$(TfsBuildExecutable)&quot; start /server:$(TeamFoundationServerUrl) /buildDefinition:&quot;Project\Next Stage&quot; /queue</CommandToTriggerNextStage>
  </PropertyGroup>

  <Exec Condition=" '$(Status)'!='Failed' "
        Command="$(CommandToTriggerNextStage)" />    
</Target>
0 голосов
/ 07 сентября 2009

Ваш посредник или второстепенные сборки могут включить полученные сборки в систему управления версиями. Таким образом, вы можете сделать так, чтобы другая сборка использовала уже скомпилированные DLL для упаковки и сборки второй части системы.

У вас может быть "большая" сборка сборки, которая прослушивает проверки из сборок библиотеки и собирает сборки, зависящие от этой сборки.

Конечно, вы можете проверить двоичный код, но если вы не делаете что-то странное, у вас должно быть достаточно места на жестком диске.

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