Управление SDLC для сценариев сборки TFS

Я нахожусь в процессе разработки нескольких пользовательских сценариев сборки для TFS, и я хотел бы знать, есть ли какие-либо рекомендации по разработке, тестированию и развертыванию сценариев сборки TFS.

Настраиваете ли вы среды разработки и контроля качества, отделенные от сервера производственной сборки? Существуют ли другие способы изолировать процесс разработки сценариев от остальной части процесса сборки, чтобы разрабатываемые сценарии сборки не мешали "производственным" сборкам?

Team Build любит создавать рабочие элементы, обновлять рабочие элементы и добавлять метки как часть процесса сборки, чего я бы предпочел не делать для "тестовой" сборки.

Jmm

1 ответ

Решение

Проверьте мой ответ здесь: Модульная TeamBuilds

Вы можете сохранить функциональность ядра в общем файле MSBuild, который включен во все сборки. Кроме того, все эти файлы являются частью вашей более широкой структуры ветвей, поэтому они принимают непосредственное участие в вашем существующем SDLC без какой-либо дополнительной работы. Таким образом:

  1. Если вы вносите рискованные изменения в свои сценарии сборки, сделайте их в "dev" или "private" ветке, как и в случае любых других рискованных изменений.
  2. Если вам нужно определение сборки, которое предназначено только для быстрой проверки, задайте для таких свойств, как SkipLabel, SkipWorkItemCreation и т. Д. Значение False, в файле *.targets, импортированном этим определением сборки.

Чтобы немного расширить #2, давайте возьмем ваш пример сборок "production" против "test". Вам нужно только включить функции, такие как маркировка, в производственных сборках. Поэтому вы должны удалить свойство SkipLabel из TFSBuild.proj (а также TFSBuild.Common.targets, если оно там определено) и вместо этого установить его в TFSBuild.Production.targets и TFSBuild.Test.targets - используя два разных значения, конечно.

Как упоминалось в предыдущем вопросе, TFSBuild.proj является основным файлом msbuild, который управляет работой остальной части сборки. Вот как выглядит моя:

<?xml version="1.0" encoding="utf-8"?>

<!-- DO NOT EDIT the project element - the ToolsVersion specified here does not prevent the solutions 
     and projects in the SolutionToBuild item group from targeting other versions of the .NET framework. 
     -->
<Project DefaultTargets="DesktopBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">

    <!-- Import configuration for all MyCompany team builds -->
    <Import Project="MyCompany.TeamBuild.Common.targets"/>

    <!-- Import build-specific configurations -->  
    <Import Condition="'$(BuildDefinition)'=='Dev - quick'"     Project="MyCompany.TeamBuild.Quick.targets" />
    <Import Condition="'$(BuildDefinition)'=='Main - full'"     Project="MyCompany.TeamBuild.Full.targets" />
    <Import Condition="'$(BuildDefinition)'=='Main - quick'"    Project="MyCompany.TeamBuild.Quick.targets" />
    <Import Condition="'$(BuildDefinition)'=='Release - full'"  Project="MyCompany.TeamBuild.Full.targets" />

    <!-- This would be much cleaner as we add more branches, but msbuild doesn't support it :(
         Imports are evaluated declaratively at parse-time, before any tasks execute
    <Target Name="BeforeEndToEndIteration">
      <RegexReplace Input="$(BuildDefinition)" Expression=".*\s-\s" Replacement="">
        <Output TaskParameter="Output" PropertyName="BuildType" />
      </RegexReplace>
    </Target>
    <Import Condition="$(BuildType)==full"  Project="MyCompany.TeamBuild.Full.targets" />
    <Import Condition="$(BuildType)==quick" Project="MyCompany.TeamBuild.Quick.targets" />
    -->
</Project>

Сделав нечто подобное, вы можете убедиться, что все сборки из ветви Dev являются "быстрыми" сборками (что для вас означает отсутствие маркировки и т. Д.), Все сборки из ветви Release являются "полными" сборками, а сборки из ветви Main могут быть в зависимости от того, какое определение сборки пользователь запускает из Visual Studio / TSWA. У меня есть "быстрые" сборки, настроенные с помощью непрерывной интеграции, и "полные" сборки, работающие по ночам.

Другие вопросы по тегам