Поделиться через


Действия Team Foundation Build

Действия Team Foundation Build — основные компоненты процесса построения в системе Team Foundation Build. Эти действия можно использовать для создания пользовательского процесса построения, что позволяет соблюсти требования команды разработки, например, создать пользовательскую логику или выполнить специализированные задачи.

В большинстве случаев лучший способ создания пользовательского шаблона процесса построения — создание его на основе шаблона по умолчанию (DefaultTemplate.xaml). Это позволяет использовать полезную функциональность, созданную ранее, изменив нужные фрагменты в соответствии с требованиями. Другим преимуществом этого подхода является возможность знакомиться с конкретными практическими примерами использования действий, описанными в этом разделе. Сведения о создании шаблона процесса построения см. в разделе Настройка шаблона процесса сборки.

Важно!

Создавать пользовательский шаблон процесса построения имеет смысл, только в случае, если есть специфические требования.Быстро определить процесс построения, отвечающий обычным требованиям, можно с помощью DefaultTemplate.xaml.Дополнительные сведения см. в разделе Использование шаблона по умолчанию для процесса сборки.

Содержание раздела

  • Необходимые разрешения

  • Указатель действий по задачам

  • Алфавитный указатель действий

Необходимые разрешения

Для выполнения процедур, использующих действия Team Foundation Build, требуются следующие разрешения со значением Разрешить:

  • Редактировать определение построения

  • Извлечь и Вернуть для соответствующих каталогов системы управления версиями (например, подкаталога BuildProcessTemplates командного проекта)

  • Постановка построений в очередь

Дополнительные сведения см. в разделе Справочник по разрешениям Team Foundation Server.

Указатель действий по задачам

  • Выполнение основных задач

    • Получение значений переменных среды

    • Проверка переменных на значения NULL

    • Получение путей к файлам в рабочей области

    • Работа с каталогами

    • Получение пути к рабочему каталогу агента построения

    • Загрузка файлов, не находящихся в рабочей области

    • Поиск файлов

    • Запись предупреждений, ошибок, сообщений и других данных в журнал построения

    • Запись метаданных построения в хранилище данных

  • Контроль процесса построения

    • Запуск действия агента построения

    • Использование именованной структуры мьютекса для реализации потокобезопасного процесса

    • Ограничение разделов процесса построения на основе причин (триггеров)

  • Компиляция, тестирование и другие задачи

    • Использование MSBuild для компиляции двоичных файлов, запуска анализа кода и других задач

    • Выполнение тестирования

    • Получение списка тестов, которые затрагивает построение

    • Запуск процесса

  • Работа с системой управления версиями

    • Связывание наборов изменений и наборов рабочих элементов с построением

    • Возврат собранных изменений

    • Вычисление политик возврата

    • Назначение меток файлам в системе управления версиями

    • Получение списка наборов отложенных изменений

    • TfGet

    • TfResolve

    • TfShelve

    • TfUndo

    • TfUnshelve

    • TfWorkfold

  • Работа с рабочими элементами

    • Связывание наборов изменений и наборов рабочих элементов с построением

    • Создать рабочий элемент

  • Работа с символьными данными

    • Внедрение версий и путей системы контроля версий в символьные данные в PDB-файлах

    • Публикация символов в хранилище символов SymStore

  • Получение ссылок на полезные объекты

    • Возврат ссылки на объект для коллекции командного проекта

    • Возврат ссылки на объект для агента построения

    • Получение ссылки на объект для агента построения

    • Получение ссылки на объект для среды построения

Алфавитный указатель действий

  • AgentScope

  • ApproveRequestForCheckIn

  • AssociateChangesetsAndWorkItems

  • CheckInGatedChanges

  • ConvertWorkspaceItem

  • ConvertWorkspaceItems

  • CopyDirectory

  • CreateDirectory

  • CreateWorkspace

  • DeleteDirectory

  • DeleteWorkspace

  • DownloadFile

  • DownloadFiles

  • EvaluateCheckInPolicies

  • ExpandEnvironmentVariables

  • FindMatchingFiles

  • GenerateRunSettings

  • GetApprovedRequests

  • GetBuildAgent

  • GetBuildDetail

  • GetBuildDirectory

  • GetBuildEnvironment

  • GetCommonLocalPath

  • GetCommonServerPath

  • GetImpactedTests

  • GetPendingChanges

  • GetRejectedRequests

  • GetReshelvedShelveset

  • GetShelvedChanges

  • GetTeamProjectCollection

  • GetWorkspace

  • IndexSources

  • InvokeForReason

  • InvokeProcess

  • IsNotNull<T>

  • IsNull<T>

  • LabelSources

  • LabelWorkspace

  • MSBuild

  • MSTest

  • OpenWorkItem

  • ParseWorkspaceSpec

  • PublishSymbols

  • QueryShelvesets

  • RejectRequestFromCheckIn

  • RetryRequest

  • RetryRequests

  • RevertWorkspace

  • RunOnce

  • RunTests

  • SetBuildProperties

  • SharedResourceScope

  • SyncWorkspace

  • SynchronizeRequests

  • TfGet

  • TfQueryConflicts

  • TfResolve

  • TfShelve

  • TfUndo

  • TfUnshelve

  • TfWorkfold

  • TfsBuild

  • UpdateBuildNumber

  • WriteBuildError

  • WriteBuildInformation<T>

  • WriteBuildMessage

  • WriteBuildTestError

  • WriteBuildWarning

  • WriteCustomSummaryInformation

Выполнение основных задач

С помощью программы Team Foundation Build можно выполнить следующие действия:

  • Получение значений переменных среды

  • Получение путей к файлам в рабочей области

  • Работа с каталогами

  • Получение пути к рабочему каталогу агента построения

  • Загрузка файлов, не находящихся в рабочей области

  • Поиск файлов

  • Запись предупреждений, ошибок, сообщений и других данных в журнал построения

  • Запись метаданных о построении

Получение значений переменных среды (действие ExpandEnvironmentVariables)

Для разрешения одной и более переменных среды на сервере построения следует использовать действие ExpandEnvironmentVariables. Переменные среды считываются из агента построения, если активность находится внутри последовательности AgentScope; в других случаях они считываются из контроллера построения.

Совет

Можно получить полезные биты данных из переменных среды TF_BUILD.Например, можно получить каталог двоичных файлов, из которого копируются выходные файлы в расположение промежуточного хранения в процессе сборки.См. раздел Переменные среды Team Foundation Build.

Свойство Result действия ExpandEnvironmentVariables (String)

Возвращает результат операции. Пример: The temp directory on machine BLDSERV3 is C:\windows\SERVIC~2\NETWOR~1\AppData\Local\Temp.

Свойства-аргументы действия ExpandEnvironmentVariables

  • Input (String). Следует задать строку, содержащую переменные среды, которые необходимо разрешить. Необходимо форматировать каждую переменную среды, задавая свойство MSBuild, а не используя принятую в Windows запись со знаком процента. Пример: "The temporary directory on machine $(COMPUTERNAME) is $(TEMP)."

  • AdditionalVariables (IDictionary<String,String>). Можно задать объект IDictionary, содержащий любые дополнительные переменные (в качестве ключей), для которых нужно получить соответствующие значения.

К началу

Проверка переменных на значения NULL

IsNotNull<T>

Действие IsNotNull<T> позволяет проверить, что выражение Visual Basic (например, используемая переменная), указанное в свойстве Value (Object), не равно Null. Результаты теста возвращаются в свойство Result Boolean.

IsNull<T>

Действие IsNull<T> позволяет проверить, что выражение Visual Basic (например, используемая переменная), указанное в свойстве Value (Object), равно Null. Результаты теста возвращаются в свойство Result Boolean.

Получение путей к файлам в рабочей области

Для каждого построения существует рабочая область системы управления версиями, определенная на вкладке Рабочая область определения построения. Рабочая область предоставляет построению доступ к файлам исходного кода и к любым другим файлам, которые построению необходимо получить из системы управления версиями. Team Foundation Build предоставляет два действия, используемые для работы с файлами в рабочей области построения: ConvertWorkspaceItem и ConvertWorkspaceItems.

Дополнительные сведения о рабочих областях построений см. в разделе Создание или изменение определения сборки.

Совет

Подробное пошаговое руководство по использованию действия ConvertWorkspaceItem в распространенных сценариях см. в разделе Управление местом размещения двоичных файлов системой построения.

Получение пути к файлу в рабочей области (действие ConvertWorkspaceItem)

Действие ConvertWorkspaceItem используется для преобразования серверного пути в локальный путь агента построения и для обратного преобразования.

Свойство Result действия ConvertWorkspaceItem (String)

Возвращает преобразованный путь.

Свойства-аргументы действия ConvertWorkspaceItem

  • Input (String). Необходимо предоставить значение конвертируемого пути.

  • Workspace (Workspace). Необходимо предоставить ссылку на содержащую файл рабочую область Workspace. В большинстве случаев необходимо присвоить этому свойству ссылку на переменную, инициализированную в свойстве Result действия CreateWorkspace. При создании процесса построения на основе файла DefaultTemplate.xaml, вероятно, следует использовать переменную Workspace.

  • Направление

    • Преобразование серверного пути в локальный. В свойстве Direction выберите ServerToLocal, после чего задайте путь к файлу на сервере в свойстве Input (String).

      Например, ваша команда может хранить общие служебные программы в каталоге $/OurTeam/BuildProcess/Util. Можно создать пользовательский процесс построения, запускающий служебную программу ScanBinaries.exe после завершения компиляции двоичных файлов. Если сопоставление для каталога $/OurTeam/BuildProcess/Util указано на вкладке Рабочая область вашего определения построения, можно задать $/OurTeam/BuildProcess/Util/ScanBinaries.exe в свойстве Input для получения локального пути к служебной программе из свойства Result (String).

    • Преобразование локального пути в серверный. В свойстве Direction выберите ServerToLocal, после чего задайте путь локальный к файлу в агенте построения свойстве Input.

Получение путей к файлам в рабочей области (действие ConvertWorkspaceItems)

Действие ConvertWorkspaceItems используется для преобразования серверных путей в локальные пути агента построения и для обратного преобразования.

Свойство Result действия ConvertWorkspaceItems (IList<String>)

Возвращает значения преобразованных путей.

Свойства-аргументы действия ConvertWorkspaceItems

  • Input (IEnumerable<String>). Необходимо предоставить значения конвертируемых путей.

  • Workspace (Workspace). Необходимо предоставить ссылку на содержащую файлы рабочую область Workspace. В большинстве случаев необходимо присвоить этому свойству ссылку на переменную, инициализированную в свойстве Result действия CreateWorkspace.

    Совет

    При создании процесса построения на основе файла DefaultTemplate.xaml, вероятно, следует использовать переменную Workspace.

  • Direction. Выберите одно из следующих значений:

    • Выберите значение ServerToLocal, если задаете свойству Input коллекцию значений серверных путей и хотите, чтобы свойство Result вернуло список значений локальных путей.

    • Выберите значение LocalToServer, если задаете свойству Input коллекцию значений локальных путей и хотите, чтобы свойство Result вернуло список значений серверных путей.

Работа с каталогами

Для работы с каталогами в Team Foundation Build предназначено несколько действий.

Совет

При работе с каталогами, являющимися частью рабочей области системы управления версиями, вместо них следует использовать действия рабочей области.Дополнительную информацию см в подразделе Получение путей к файлам в рабочей области.

Создание каталога (действие CreateDirectory)

Действие CreateDirectory используется для создания каталога, имя которого задается свойству Directory (String).

Копирование каталога (действие CopyDirectory)

Действие CopyDirectory используется для рекурсивного копирования всего содержимого каталога, указанного в свойстве Source (String) в другой каталог, указанный в свойстве Destination (String). Каталог, указанный в свойстве Destination, должен существовать на момент выполнения действия. Пустые каталоги и подкаталоги не копируются.

Удаление каталога (действие DeleteDirectory)

Действие DeleteDirectory используется для удаления каталога, имя которого задается свойству Directory (String). Если удаляемый каталог содержит подкаталоги, необходимо задать свойству Recursive (Boolean) значение True, в противном случае построение завершится ошибкой.

Получение пути к рабочему каталогу агента сборки (действие GetBuildDirectory)

Действие GetBuildDirectory используется для получения точного пути к рабочему каталогу агента построения в свойстве Result (String). Это действие можно использовать только внутри действия AgentScope.

К началу

Управление сведениями о пути

Действие GetCommonLocalPath

Действие GetCommonLocalPath используется для получения пути к общей папке самого низкого уровня, которая является родительской для одной или нескольких локальных папок. Например, если указать LocalItems (IEnumerable<String>) следующим образом:

{“c:\Code\Fabrikam-3\TestScrum\Main\FabrikamFiber.CallCenter”, “c:\Code\Fabrikam-3\TestScrum\Main\lib”}

То Result (String) возвращает:

c:\Code\Fabrikam-3\TestScrum\Main

Действие GetCommonServerPath

Действие GetCommonServerPath используется для получения пути к общей папке самого низкого уровня, которая является родительской для одной или нескольких локальных папок. Например, если указать ServerItems (IEnumerable<String>) следующим образом:

{“$/TestScrum/Main/FabrikamFiber.CallCenter”, “$/TestScrum/Main/lib”}

То Result (String) возвращает:

$/TestScrum/Main

Загрузка файлов, не находящихся в рабочей области

Действие DownloadFiles используется для загрузки одного или нескольких файлов. Действие DownloadFile следует игнорировать.

Действие DownloadFiles

Действие DownloadFiles используется для загрузки одного или нескольких файлов из системы управления версиями.

Совет

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

Свойства-аргументы действия DownloadFiles

  • LocalPath (String). Необходимо указать значение:

    • Если требуется загрузить единичный файл, укажите локальный путь и имя, которое требуется присвоить локальной копии загружаемого файла, например "c:\Docs\readme.txt".

    • Если требуется загрузить несколько файлов, укажите локальный путь к каталогу, в который требуется загрузить файлы, например "c:\Docs\".

  • ServerPath (String). Необходимо указать значение:

    • Если требуется загрузить единичный файл, укажите серверный путь и имя загружаемого файла, например "$/Docs/readme.txt".

    • Если требуется загрузить несколько файлов, укажите серверный путь к каталогу, содержащему файлы, которые требуется загрузить, например "$/Docs/".

  • Recursion (RecursionType):

    • OneLevel. Загружает файл или файлы, находящиеся в каталоге, заданном свойству ServerPath.

    • Full. Загружает файл или файлы, находящееся в каталоге, заданном свойству ServerPath, и все файлы во всех подкаталогах этого каталога.

  • Version (String). Можно указать версию файла. Для загрузки текущей версии оставьте значение свойства равным Microsoft.TeamFoundation.VersionControl.Client.VersionSpec.Latest.DisplayString. Дополнительные сведения о версиях см. в разделе Синтаксис командной строки.

  • DeletionID (Int32). Это свойство следует задавать только если требуется загрузить файл, удаленный из системы контроля версий. Это значение можно получить в интерактивном режиме, набрав в командной строке tf dir /deleted. (Дополнительные сведения см. в разделе Dir Command.) В Team Foundation Build нет встроенного действия для получения DeletionID. Для использования этого действия нужно создать пользовательское действие, предоставляющее эту функциональность.

К началу

Действие DownloadFile

Действие DownloadFile следует игнорировать. Действие DownloadFiles — самый простой способ загрузить один или множество файлов.

Поиск файлов (действие FindMatchingFiles)

Действие FindMatchingFiles используется для поиска файлов. Задайте свойству MatchPattern (String) критерии поиска. В этом свойстве можно задать аргумент, включающий следующие элементы:

  • Синтаксис, поддерживаемый аргументом searchPattern метода Directory GetFiles(String, String).

  • ** для указания на рекурсивный поиск. Примеры.

    • Для поиска текстовых файлов в каталоге с исходными кодами нужно задать для свойства MatchPattern значение, напоминающее следующее: String.Format("{0}\**\*.txt", SourcesDirectory).

    • Для поиска в каталоге с исходными кодами текстовых файлов, расположенных в одном или многих подкаталогах с именем txtfiles, нужно задать для свойства MatchPattern значение, напоминающее следующее: String.Format("{0}\**\txtfiles\*.txt", SourcesDirectory).

Результат операции будет содержаться в свойстве Result (IEnumerable<String>).

Запись предупреждений, ошибок, сообщений и других данных в журнал построения

WriteCustomSummaryInformation

Действие WriteCustomSummaryInformation используется для записи сообщения в сводку сборки, которую пользователь может просматривать в окне результатов сборки.

Свойства-аргументы действия WriteCustomSummaryInformation

  • Message (String). Необходимо указать сообщение, которое будет выводиться в сводку сборки.

    Чтобы включить в сообщение гиперссылки, используйте следующие варианты синтаксиса:

    [link text](url)
    [link text] (url)
    

    Например:

    For the latest operation status, see [Fabrikam Fiber Ops] (http://intranet.fabrikam.com/ops/status).
    
  • SectionDisplayName (String). Необходимо указать имя раздела, в котором будет отображаться сообщение. Если несколько экземпляров WriteCustomSummaryInformation с одинаковым значением SectionKey задают разные значения SectionDisplayName, то в шаблоне процесса сборки система использует SectionDisplayName первого экземпляра.

  • SectionKey (String). Необходимо указать идентификатор имени раздела, в котором будет отображаться сообщение. Указанное значение должно соответствовать правилам для поля NameProperty.

    Например, если реализуются два экземпляра WriteCustomSummaryInformation, у которых SectionKey имеет значение “MySection”, при обработке сборки оба сообщения отображаются в одном разделе сводки сборки.

  • SectionPriority (Int32). Позволяет указать приоритет раздела, который в свою очередь определяет относительное положение раздела в сводке сборки. Чем меньше значение, тем выше раздел будет отображаться в сводке. Если несколько экземпляров WriteCustomSummaryInformation с одинаковым значением SectionKey задают разные значения SectionPriority, то в шаблоне процесса сборки система использует значение SectionPriority первого экземпляра.

К началу

Действие WriteBuildMessage

Действие WriteBuildMessage используется для записи информационного сообщения в журнал построения. Необходимо задать сообщение в свойстве Message (String). Также можно указать важность сообщения, изменив значение свойства Importance (BuildMessageImportance).

Совет

  • Пользователи процесса построения могут использовать фильтрацию для уменьшения потока информации. Это касается как сведений, предназначенных для них лично, так и содержимого хранилища данных.Используя содержательный и последовательный подход к установке свойства Importance для сообщений построения, вы облегчите эту фильтрацию.Дополнительные сведения см. в разделе Управление сведениями по построении и уровнем детализации.

  • При использовании параметров по умолчанию сообщение не будет записано в журнал построения.Устранить эту проблему можно одним из двух способов:

    • Присвойте свойству WriteBuildMessage Importance значение Microsoft.TeamFoundation.Build.Client.BuildMessageImportance.High.

    • На вкладке определения построения Процесс задайте параметру обработки Уровень подробного ведения журнала значение Detailed или Diagnostic.

Действие WriteBuildWarning

Действие WriteBuildWarning используется для записи предупреждающего сообщения в журнал построения. Предупреждения отображаются с желтым восклицательным знаком в окне результатов построения. Необходимо задать сообщение в свойстве Message (String).

Предупреждения построения записываются в журнал только при заданной в команде детализации "Минимальная" и выше. Дополнительные сведения см. в разделе Управление сведениями по построении и уровнем детализации.

Действие WriteBuildError

Действие WriteBuildError используется для записи сообщения об ошибке сборки в журнал сборки. Ошибки отображаются с красным восклицательным знаком в окне результатов построения. Если в журнал построения записана ошибка, построение получит статус не выше чем Partially Succeeded. Необходимо задать сообщение в свойстве Message (String).

Ошибки всегда записываются в журнал независимо от установленного уровня детализации. Дополнительные сведения см. в разделе Управление сведениями по построении и уровнем детализации.

Действие WriteBuildTestError

Действие WriteBuildTestError используется для записи сообщения об ошибке теста в журнал сборки. Ошибки отображаются с красным восклицательным знаком в окне результатов построения. Если в журнал построения записана ошибка, построение получит статус не выше чем Partially Succeeded. Необходимо задать сообщение в свойстве Message (String).

Ошибки всегда записываются в журнал независимо от установленного уровня детализации. Дополнительные сведения см. в разделе Управление сведениями по построении и уровнем детализации.

Действие WriteBuildInformation<T>

Действие WriteBuildInformation<T> используется для помещения объекта в журнал построения. При просмотре пользователем журнала в окне результатов построения объект отображается с помощью отражения.

Свойства-аргументы WriteBuildInformation<T>

  • Value (Object). Следует указать объект, который требуется поместить в журнал построения. Чтобы объект отобразился в окне результатов построения, он должен реализовывать интерфейс IBuildInformationNode; следует задать для свойства Type одно из следующих значений InformationTypes:

    • ActivityProperties

    • ActivityTracking

    • AgentScopeActivityTracking

    • BuildError

    • BuildMessage

    • BuildProject

    • BuildStep

    • BuildWarning

    • ExternalLink

    • OpenedWorkItem

  • ParentToBuildDetail. При значении False родительский объект этого объекта станет родительским объектом этого действия. При значении True — родительским объектом станет объект IBuildDetail.

    Кроме прочего, это свойство влияет на отображение информации в окне результатов построения. Если задано значение False, информация будет отображаться с отступом; она будет выровнена по выходным данным других действий, следующих до и после действия WriteBuildInformation<T> и находящихся на том же уровне. Если задано значение True, информация отобразится без отступа.

К началу

Запись метаданных в хранилище данных

Метаданные построения можно записать в хранилище данных.

  • Запись номера построения (действие UpdateBuildNumber)

  • Запись ключевых точек данных построения (действие SetBuildProperties)

Совет

Если эти действия не поддерживают метаданные, которые требуется записать, можно использовать действие GetBuildDetail для получения ссылки на объект IBuildDetail, после чего с помощью этой ссылки присваивать данные непосредственно объекту.

Запись номера сборки (действие UpdateBuildNumber)

Действие UpdateBuildNumber используется, чтобы задать номер (или имя) построения. Действие выполняет следующие действия:

  1. Создает номер построения на основе выражения, определяющего формат номера построения. Процесс построения обычно принимает это выражение из аргумента рабочего процесса, получаемого из параметра на вкладке Процесс определения построения.

  2. Задает номер (или имя) построения, присваивая результирующее значение свойству BuildNumber.

Свойство Result действия UpdateBuildNumber (String)

Result. Возвращает новое значение BuildNumber.

Свойства UpdateBuildNumber

К началу

Запись ключевых точек данных сборки (действие SetBuildProperties)

Действие SetBuildProperties используется для записи ключевых точек данных в объект IBuildDetail, управляющий хранением данных о каждом построении в хранилище данных. Значительная часть этих данных отображается в окне результатов построения.

Свойства SetBuildProperties

  • PropertiesToSet. Необходимо установить флажки, относящиеся к именам свойств, которые требуется задать.

  • BuildNumber (String). Можно задать для построения свойство BuildNumber, которое можно считать именем построения.

    Совет

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

  • CompilationStatus (BuildPhaseStatus). Можно задать состояние компиляции (CompilationStatus). (Действие MSBuild также задает это значение автоматически.)

  • DropLocation (String). Можно задать каталог размещения в свойстве DropLocation.

    Примечание

    Если задать это свойство, каталог размещения не будет создан.Это свойство используется для хранения в хранилище данных местоположения каталога размещения, который обычно создается с помощью действия CreateDirectory.

  • KeepForever (Boolean). Если требуется обойти параметры, указанные на вкладке Retention Policy, и сохранить завершенное построение на неопределенное время, можно задать для свойства KeepForever значение True.

  • LabelName (String). Чтобы записать метку, использованную для указания на это построение среди файлов исходного кода в системе контроля версий, можно использовать свойство LabelName. Обычно это свойство задается в соответствии со значением свойства Name действия LabelWorkspace.

    Важно!

    Эти данные требуются Team Foundation Build, чтобы связать набор изменений и рабочие элементы с построением.Если не предоставить эти данные, действие AssociateChangesetsAndWorkItems завершится ошибкой.

  • LogLocation (String). Свойство LogLocation можно использовать для записи UNC-пути к папке, в которую процесс построения помещает файл журнала.

    Примечание

    Вероятно, при создании пользовательского процесса построения это свойство вам не понадобится.Это свойство предназначено для использования в файле UpgradeTemplate.xaml для поддержки прежних версий процессов построения.

  • Quality (String). Свойство Quality предназначено для записи качества построения.

  • SourceGetVersion (String). Свойство SourceGetVersion предназначено для записи спецификации версии, для которой извлекаются исходные коды построения.

  • Status (BuildStatus). Свойство Status позволяет записать общее состояние построения. Например, можно записать, было построение выполнено успешно или завершилось ошибкой.

  • TestStatus (BuildPhaseStatus). Свойство TestStatus используется для записи общего состояния тестов, выполненных для этого построения. Например, можно записать, были ли тесты, запущенные для этого построения, выполнены успешно или завершились ошибкой.

К началу

Контроль процесса сборки

Действия Team Foundation Build позволяют контролировать процесс построения следующими способами:

  • Запуск действия агента построения

  • Использование именованной структуры мьютекса для реализации потокобезопасного процесса

  • Ограничение разделов процесса построения на основе причин (триггеров)

Запуск действий на агенте сборки (действие AgentScope)

В действие AgentScope заключаются части процесса построения, которые требуется выполнить на агенте построения.

Свойства-аргументы действия AgentScope

  • Выбор агента

    • MaxWaitTime (TimeSpan). Указывает максимальное количество времени, в течение которого процесс построения ожидает доступности агента построения. Значение интервала времени задается в формате чч:мм:сс. Например, если указано значение 01:30:45, а построение не было назначено агенту построения спустя 1 час, 30 минут и 45 секунд, построение завершится ошибкой превышения времени ожидания. Укажите значение 00:00:00, если нужно предоставить контроллеру построений неограниченное время для поиска агента построения, который будет обрабатывать это определение построения.

      Важно!

      Чтобы избежать избыточного наполнения очереди построений, следует указать ненулевое значение свойства MaxWaitTime.

    • ReservationSpec (AgentReservationSpec). Можно ограничить тип агентов построения, которые будут обрабатывать действия, содержащиеся в данном действии. Например, можно указать, чтобы действия, входящие в действие AgentScope, обрабатывались только агентами с определенным тегом.

  • Выполнение

    • MaxExecutionTime (TimeSpan). Указывает максимальное количество времени, отведенного на завершение данного действия AgentScope. Значение интервала времени задается в формате чч:мм:сс. Например, если указано значение 04:30:15, а агент построения не завершил свою работу спустя 4 часа, 30 минут и 15 секунд, построение завершится ошибкой превышения времени ожидания. Укажите значение 00:00:00, если нужно предоставить агенту построения неограниченное время для обработки построения.

      Совет

      Чтобы избежать избыточного наполнения очереди построений, следует указать ненулевое значение свойства MaxExecutionTime.

  • Область

    • DataToIgnore. Это свойство следует игнорировать.

К началу

Использование именованной структуры мьютекса для реализации потокобезопасного процесса (действие SharedResourceScope)

Действие SharedResourceScope используется для реализации именованной структуры мьютекса (структуры взаимного исключения). Это позволяет убедиться, что включенный сегмент процесса сборки "потокобезопасен".

Обычно это действие используется, чтобы заключить в него части процесса построения, которым нужен доступ к общему ресурсу, в то время как этот ресурс должен быть доступен одновременно только одному процессу. Например, требуется, чтобы построения последовательно записывали данные в один текстовый файл, находящийся в общей папке. Чтобы быть уверенным, что эти процессы будут работать правильно, следует реализовать их внутри действия SharedResourceScope.

Другой пример можно найти в шаблоне DefaultTemplate.xaml, где вызов действия PublishSymbols внедрен в действие SharedResourceScope:

  1. Последовательность (Sequence) >

  2. Выполнение в агенте (AgentScope) >

  3. Попытка откомпилировать, протестировать и сопоставить наборы изменений и рабочие элементы (TryCatch [Try]) >

  4. Последовательность (Sequence) >

  5. Получение затронутых тестов, индексация исходного кода и публикация символов (Parallel) >

  6. Если SourceAndSymbolServerSettings.IndexSources или SourceAndSymbolServerSettings.HasSymbolStorePath (If [Then]) >

  7. Индексация исходного кода и публикация символов для инициированных сборок (InvokeForReason) >

  8. Если SourceAndSymbolServerSettings.HasSymbolStorePath (If [Then]) >

  9. Попытка опубликовать символы (TryCatch [Try]) >

  10. Синхронизация доступа к хранилищу символов (SharedResourceScope) >

  11. Публикация символов (PublishSymbols)

Свойства-аргументы действия SharedResourceScope

  • ResourceName (String). Необходимо задать значение. Все экземпляры действий SharedResourceScope с одинаковым значением ResourceName в коллекции командного проекта (даже если они находятся в разных шаблонах определения построения) запускаются поочередно.

  • MaxExecutionTime (TimeSpan). Указывает максимальное количество времени, отведенного на завершение действия SharedResourceScope. Значение интервала времени задается в формате чч:мм:сс. Например, если указано значение 04:30:15, а действие SharedResourceScope не завершило работу спустя 4 часа, 30 минут и 15 секунд, построение завершится ошибкой превышения времени ожидания. Укажите значение 00:00:00, если нужно предоставить для обработки действия SharedResourceScope неограниченное время.

    Совет

    Чтобы избежать избыточного наполнения очереди построений, следует указать ненулевое значение свойства MaxExecutionTime.

  • MaxWaitTime (TimeSpan). Указывает максимальное количество времени, в течение которого процесс построения ожидает в очереди, чтобы обработать действие SharedResourceScope. Значение интервала времени задается в формате чч:мм:сс. Например, если указано значение 01:30:45, а действие SharedResourceScope не завершило работу спустя 1 час, 30 минут и 45 секунд, построение завершится ошибкой превышения времени ожидания. Укажите значение 00:00:00, если нужно предоставить процессу построения неограниченное время для ожидания в очереди.

    Совет

    Чтобы избежать избыточного наполнения очереди построений, следует указать ненулевое значение свойства MaxWaitTime.

К началу

Ограничение разделов процесса сборки с помощью условий/триггеров (действие InvokeForReason)

В действие InvokeForReason заключается часть процесса построения, которую требуется выполнять только в ходе построений, выполняемых по определенной причине. Причины выполнения построения обычно задаются триггером, выбираемым пользователем на вкладке Триггер определения построения. В свойстве Reason можно указать одну или несколько причин, которые требуется разрешить. Дополнительные сведения см. в разделе Задание триггеров и причин выполнения сборки.

К началу

Компиляция, тестирование и другие задачи

Действия Team Foundation Build можно использовать для компиляции двоичных файлов, запуска тестов и других задач:

  • Использование MSBuild для компиляции двоичных файлов, запуска анализа кода и других задач

  • Выполнение тестирования

  • Получение списка тестов, которые затрагивает данное построение

Использование MSBuild для компиляции двоичных файлов, запуска анализа кода и других задач (действие MSBuild)

Действие MSBuild используется для компиляции двоичных файлов, запуска анализа кода и использования преимуществ других функций, предоставляемых MSBuild.

Свойство Result действия MSBuild

Свойства этого действия не возвращают результата. Это действие задает для свойства CompilationStatus значение Failed, если в журнал записаны какие-либо ошибки компиляции.

Свойства-аргументы действия MSBuild

  • AdditionalVCOverrides (String). Если задать для GenerateVsPropsFile значение True, содержимое этого свойства будет внедрено в файл, созданный .vsprops.

  • CommandLineArguments (String). Этому свойству можно присвоить аргументы командной строки, которые требуется передать в MSBuild.

  • Configuration (String). Это свойство позволяет указать конфигурацию для построения. Например, “debug” или “release”.

  • GenerateVSPropsFile (Boolean). Если это свойство имеет значение True, MSBuild создает стандартный файл .vsprops для передачи в проекты C++. Этот файл будет включать выходной каталог для проектов C++, а также все, что указано пользователем в свойстве AdditionalVCOverrides.

  • LogFile (String). Это свойство позволяет указать имя файла журнала, создаваемого MSBuild.

  • LogFileDropLocation (String). Это свойство позволяет задать полный UNC-путь к каталогу, в котором действию MSBuild следует размещать файлы журнала.

  • MaxProcesses (Int32). Это свойство позволяет задать максимальное количество процессов, создаваемых действием MSBuild.

  • OutDir (String). Это свойство позволяет задать каталог, в котором действие MSBuild размещает скомпилированные двоичные файлы. Дополнительные сведения см. в разделе Управление местом размещения двоичных файлов системой построения.

  • Platform (String). Это свойство позволяет задать платформу, для которой MSBuild выполняет построение. Например, “Any CPU”, “x86” или “x64”.

  • Project (String). Это свойство позволяет задать решение или проект кода, построение которого выполняет действие MSBuild.

  • ResponseFile (String). Это свойство позволяет задать файл ответов, используемый действием MSBuild.

  • RunCodeAnalysis (CodeAnalysisOption). Это свойство позволяет определить, должен ли анализ кода запускаться всегда, никогда или в зависимости от настроек проекта.

  • Targets (IEnumerable<String>). Это свойство позволяет задать целевые объекты для построения.

  • TargetsNotLogged (IEnumerable<String>). Это свойство позволяет задать целевые объекты, для которых события ProjectStarted не требуется заносить в журнал.

  • ToolPath (String). Это свойство позволяет задать путь к инструменту.

  • ToolPlatform (ToolPlatform). Это свойство позволяет задать платформу инструмента. Задайте значение Microsoft.TeamFoundation.Build.Workflow.Activities.ToolPlatform.Auto для определения платформы на основании текущей операционной системы.

  • Verbosity (BuildVerbosity). Это свойство позволяет задать детализацию журнала, создаваемого действием MSBuild.

Дополнительные сведения о многих параметрах действия MSBuild, на которые влияют значения свойств MSBuild см. в разделе Справочник по командной строке MSBuild.

К началу

Выполнение тестов

Тесты запускаются с помощью действия RunTests или MSTest.

Выполнение тестов с помощью действия RunTests

Действие RunTests используется для тестирования с помощью гибкого средства Agile Test Runner. Если сборка компилирует и тестирует двоичные файлы с использованием несовместимых платформ, это действие необходимо выполнить отдельно для сборок каждой из платформ.

Дополнительные сведения см. в разделе Выполнение тестов в процессе сборки.

Базовые свойства RunTests

  • TestSources (IEnumerable<String>). Необходимо указать список файлов сборки, содержащих требуемые тесты.

  • ExecutionPlatform (ExecutionPlatformType). Позволяет указать платформу двоичных файлов, которые требуется протестировать. Дополнительные сведения см. в разделе Agile Test Runner.

  • ExecutionTimeout (Int32). Позволяет указать максимальное время, в течение которого процесс сборки ожидает завершения тестового запуска. Укажите значение 0, если вы хотите предоставить действию RunTests неограниченное время для выполнения тестов.

  • KeepAlive (Boolean). Если задать этому свойству значение True, процесс средства Agile Test Runner продолжит функционировать в агенте сборки после завершения действия RunTests.

  • RunSettings (String). Не документировано.

  • TestCaseFilter (String). Это свойство позволяет запустить подмножество тестовых случаев. Дополнительные сведения см. в разделе Задание условий выполнения тестов средством выполнения тестов Visual Studio.

  • UpdateFrequency (Int32). Не документировано.

  • UpdateFrequencyTimeout (Int32). Не документировано.

Параметры публикации RunTests

Можно использовать следующие свойства, чтобы публиковать результаты тестов в коллекцию командных проектов:

  • PublishResults (Boolean). Если требуется публиковать результаты тестов, следует задать этому свойству значение True.

  • Flavor (String). Это свойство позволяет задать версию построения, для которой запускался тест, результат которого требуется опубликовать.

  • Platform (String)Это свойство позволяет платформу, для которой запускался тест, результат которого требуется опубликовать.

  • RunName (String). Позволяет указать имя тестового запуска. Клиенты процесса сборки будут видеть это имя в окне сводки результатов сборки. Если имя не указано, система автоматически создаст его.

Делегаты

  • OnTestCompleted. Не документировано.

  • OnTestRunCompleted. Не документировано.

К началу

Выполнение тестов с помощью действия MSTest

Это действие используется для запуска тестов с помощью MSTest.exe.

Базовые свойства действия MSTest

Решите, как требуется запускать тесты, после чего задайте значения соответствующих параметров.

  • Для запуска тестов в тестовых контейнерах (рекомендуемый подход) используйте следующие свойства:

    • TestContainers (IEnumerable<String>). Необходимо указать тестовые контейнеры для тестов, которые требуется запустить. Это свойство является аналогом параметра /testcontainer команды MSTest.exe. Дополнительные сведения см. в разделе Параметры командной строки программы MSTest.exe (/testcontainer).

    • SearchPathRoot (String). Это свойство позволяет задать корень пути к каталогу, в котором следует искать тестовые контейнеры и их зависимости. Если значение свойства не задано, действие MSTest попытается найти файлы в обычных местах.

    • TestSettings (String). Это свойство позволяет задать используемый файл конфигурации тестового запуска. Это свойство является аналогом параметра /testsettings команды MSTest.exe. Дополнительные сведения см. в разделе Параметры командной строки программы MSTest.exe (/testsettings).

  • Для выполнения тестов, входящих в списки тестов, следует использовать следующие свойства:

Свойства фильтрации действия MSTest

Для выбора тестов, которые требуется запустить, с помощью фильтра можно использовать следующие свойства:

  • Category (String). Это свойство позволяет отфильтровать тесты по категориям тестов. Это свойство является аналогом параметра /category команды MSTest.exe. Дополнительные сведения см. в разделе Параметры командной строки программы MSTest.exe (/category) и Определение категорий тестов для группировки тестов.

  • MaxPriority (Int32). Это свойство позволяет задать максимальный приоритет запускаемым тестам. Будут выполнены только тесты с приоритетом ниже данного значения или равным ему. Необходимо указать положительное целое число, равное свойству MinPriority или превосходящее его. Чтобы не задавать максимального приоритета, следует указать значение -1.

    Совет

    Если тестам назначены приоритеты, свойства MinPriority и MaxPriority могут стать важным механизмом для определения баланса между подробным тестированием и быстрым выполнением построений.

  • MinPriority (Int32). Это свойство позволяет задать минимальный приоритет запускаемым тестам. Будут выполнены тесты с приоритетом выше данного значения или равным ему. Необходимо указать положительное целое число, меньшее значения свойства MinPriority или равное ему. Чтобы не задавать минимального приоритета, следует указать значение -1.

  • TestNames (IEnumerable<String>). Это свойство позволяет задать имена тестов, которые требуется запустить. Это свойство является аналогом параметра /test команды MSTest.exe. Дополнительные сведения см. в разделе Параметры командной строки программы MSTest.exe (/test).

Свойства публикации действия MSTest

Можно использовать следующие свойства, чтобы публиковать результаты тестов в коллекцию командных проектов:

  • Publish (Boolean). Если требуется опубликовать результат теста, следует задать значение True.

  • Flavor (String). Это свойство позволяет задать версию построения, для которой запускался тест, результат которого требуется опубликовать. Это свойство является аналогом параметра /flavor команды MSTest.exe. Дополнительные сведения см. в разделе Параметры командной строки для публикации результатов тестов.

  • Platform (String)Это свойство позволяет платформу, для которой запускался тест, результат которого требуется опубликовать. Это свойство является аналогом параметра /platform команды MSTest.exe. Дополнительные сведения см. в разделе Параметры командной строки для публикации результатов тестов.

  • TestConfigId (Int32). Это свойство позволяет задать идентификатор существующей конфигурации управления тестированием, чтобы связать ее с тестовым запуском, результаты которого требуется опубликовать. Это свойство является аналогом параметра /testconfigid команды MSTest.exe. Для получения дополнительных сведений выполните команду MSTest /? в командной строке Visual Studio.

  • TestConfigName (String). Это свойство позволяет задать имя существующей конфигурации управления тестированием, чтобы связать ее с тестовым запуском, результаты которого требуется опубликовать. Это свойство является аналогом параметра /testconfigname команды MSTest.exe. Для получения дополнительных сведений выполните команду MSTest /? в командной строке Visual Studio.

Прочие свойства действия MSTest

  • CommandLineArguments (String). Сведения о дополнительных параметрах командной строки см. в разделе Параметры командной строки программы MSTest.exe.

  • PathToResultsFilesRoot (String). Это свойство позволяет задать корень пути к каталогу на агенте построения, где инструмент MSTest.exe размещает файлы результатов (TRX-файлы).

  • ToolPath (String). Это свойство позволяет задать путь к каталогу, где находится версия MSTest.exe, которую требуется выполнить. Если путь не указан, действие Team Foundation Build автоматически определяет путь на основе данных, содержащихся в списках тестов или в тестовых контейнерах.

К началу

Получение списка тестов, которые затрагивает сборка (действие GetImpactedTests)

Действие GetImpactedTests можно использовать для выявления изменений кода в текущем построении и создания списка тестов, затронутых этими изменениями. Это действие записывает список затронутых тестов в хранилище данных, что позволяет членам команды определить, какие тесты следует запустить после завершения построения. Дополнительные сведения об использовании этих данных вашей командой см. в разделе Какие тесты следует выполнить с момента предыдущей сборки?.

Примечание

Это действие не влияет на построения с условным возвратом или на частные построения.

Обязательные условия

Действие GetImpactedTests работает только при соблюдении следующих условий:

  • Действие MSTest запущено с использованием файла параметров тестирования (указанного в свойстве TestSettings), в котором собираются данные влияния тестов. Можно использовать файл Traceandtestimpact.testsettings, создаваемый автоматически, или другой файл параметров тестирования, в котором установлен флажок Тест влияния. Дополнительные сведения см. в разделе Практическое руководство. Сбор данных для определения тестов, которые должны быть выполнены после изменения кода.

  • Действие GetImpactedTests успешно идентифицировало предыдущее построение. Дополнительные сведения см. в следующем разделе.

Идентификация предыдущей сборки с помощью действия GetImpactedTests

Действие GetImpactedTests получает результат, сравнивая текущее построение с предыдущим. Действие идентифицирует предыдущее построение следующим образом:

  1. Если задать свойство BaselineBuildDropLocation, построение, которым были созданы эти двоичные файлы, будет идентифицировано как предыдущее построение.

  2. Если свойство BaselineBuildDropLocation не задано, действие идентифицирует предыдущее построение, производя в хранилище данных поиск последнего построения, соответствующего следующим условиям:

    • Значение свойства BuildDefinitionUri совпадает с текущим построением.

    • Значение свойства Status построения равно Succeeded или PartiallySucceeded.

    • У построения существует свойство DropLocation.

    • Построение не является построением с условным возвратом или закрытым построением.

Результирующие свойства действия GetImpactedTests

  • CodeChanges (CodeChangeList). Возвращает список изменений в каждом методе кода между текущим и прошлым построениями. Методы анализируются на уровне промежуточного языка MSIL.

  • ImpactedTests (TestList). Возвращает список тестов, затронутых изменениями кода между текущим и прошлым построениями.

Свойства-аргументы действия GetImpactedTests

  • Прочее

    • Build. Необходимо предоставить объект IBuildDetail построения. Для получения ссылки на этот объект можно использовать действие GetBuildDetail.
  • Прочее

    • Assemblies (IEnumerable<String>). Необходимо указать список сборок, которые требуется проверить действием. Обычно это сборки, построение которых выполняется в рамках данного построения.

    • AssociatedChangesets (IList<Changeset>). Это свойство позволяет задать наборы изменений, которые требуется связать с результатами влияния на тесты. Обычно требуется указать наборы изменений, относящихся к построению. ссылку на эти наборы изменений можно получить с помощью действия AssociateChangesetsAndWorkItems.

    • BinariesRoot (String). необходимо задать путь к двоичным файлам, от которых зависят сборки. Это значение можно получить с помощью действия GetBuildDirectory.

    • Workspace (Workspace). Необходимо предоставить ссылку на рабочую область построения. Получить эту ссылку можно из свойства Result действия CreateWorkspace.

    • BaselineBuildDropLocation (String). Это свойство позволяет задать путь к транзитному каталогу, содержащему завершенные построения, которые требуется сравнить с текущим построением с помощью действия GetImpactedTests. Если это свойство не задано, действие пытается запросить предыдущее построение у системы построения. Дополнительные сведения см. ранее в этом разделе в подразделе "Идентификация предыдущего построения действием GetImpactedTests".

К началу

Запуск процесса (действие InvokeProcess)

Для запуска процесса (запуска программы) на сервере построения используется действие InvokeProcess. Это действие представляет собой программу-оболочку для Start.

Свойство Result действия InvokeProcess (Int32)

Возвращает ExitCode из процесса.

Свойства-аргументы действия InvokeProcess

  • FileName (String). Необходимо указать свойство FileName процесса, который требуется запустить (программы, которую требуется запустить). Например: %ProgramFiles%\ContosoBuildUtils\MarkBins.exe.

  • Arguments (String). Это свойство позволяет задать аргументы командной строки (Arguments), которые требуется передать процессу.

  • EnvironmentVariables (IDictionary<String,String>). Это свойство позволяет задать дополнительные переменные среды (EnvironmentVariables) и их значения.

  • OutputEncoding (Encoding). Это свойство позволяет задать кодировку, используемую для чтения потока вывода (StandardOutputEncoding) и потока сообщений об ошибках (RedirectStandardError). Во многих случаях значение по умолчанию этого свойства является наилучшим:

    System.Text.Encoding.GetEncoding(System.Globalization.CultureInfo.InstalledUICulture.TextInfo.OEMCodePage)
    
  • WorkingDirectory (String). Это свойство позволяет задать рабочую папку (WorkingDirectory), в которой требуется запустить процесс.

    Например, может потребоваться запустить инструмент MarkBins.exe для действий над скомпилированными двоичными файлами. Для ограничения области, для которой будет выполняться инструмент, можно вызвать действие GetBuildDirectory и поместить результат в это свойство.

Отображение стандартного выходного потока и потока сообщений об ошибках процесса

  1. В действии InvokeProcess дважды щелкните область Дважды щелкните, чтобы просмотреть.

  2. Перетащите действие WriteBuildMessage с панели элементов таким образом, чтобы оно помещалось под элементом Обработать стандартный вывод и задайте свойству Message действия WriteBuildMessage значение stdOutput.

  3. Перетащите действие WriteBuildError с панели элементов таким образом, чтобы оно помещалось под элементом Обработать стандартный вывод и задайте свойству Message действия WriteBuildMessage значение errOutput.

Работа с системой управления версиями

С помощью программы Team Foundation Build можно выполнить следующие действия, связанные с управлением версиями:

  • Связывание наборов изменений и наборов рабочих элементов с построением

  • Возврат собранных изменений

  • Вычисление политик возврата

  • Назначение меток файлам в системе управления версиями

Сопоставление наборов изменений и рабочих элементов со сборкой (действие AssociateChangesetsAndWorkItems)

Действие AssociateChangesetsAndWorkItems предназначено для связывания каждого выполненного построения со всеми наборами изменений, внесенными в код, а также со связанными с ними рабочими элементами.

Каждое определение построения ведет собственную запись наборов изменений и рабочих элементов, которые ожидают связывания со следующим завершенным построением. Допустим, что набор изменений 382 мог быть построен с помощью построения A или B. Построение A было помещено в очередь и успешно завершено, а построение B было помещено в очередь и завершилось ошибкой. Набор изменений 382 теперь связан с успешно завершенным построением А и неудачно завершенным построением В. В дальнейшем набор изменений 382 не будет связан со следующим завершенным построением А, но будет связан со следующим успешно завершенным построением В.

Свойство Result действия AssociateChangesetsAndWorkItems (IList<Changeset>)

Возвращает наборы изменений, которые были связаны с построением.

Свойства-аргументы действия AssociateChangesetsAndWorkItems

  • CurrentLabel (String). Это свойство следует оставить пустым.

  • LastLabel (String). Это свойство следует оставить пустым.

  • UpdateWorkItems (Boolean). Если требуется заполнить поле Fixed In связанных рабочих элементов номером построения, следует задать для этого свойства значение True. В противном случае — значение False.

К началу

Возврат собранных изменений (действие CheckInGatedChanges)

Действие CheckInGatedChanges предназначено для возврата в систему управления версиями изменений кода, запустивших построение с условным возвратом. Это действие также связывает построение с рабочими элементами, связанными с наборами изменений.

Примечание

Для правильной работы следует поместить это действие в шаблоне после всех реализаций действий MSBuild и MSTest.

Свойство Result действия CheckInGatedChanges (Changeset)

Возвращает набор изменений, содержащий возвращаемые изменения.

Свойства-аргументы действия CheckInGatedChanges

  • IgnoreErrors (Boolean). Чтобы разрешить возврат файлов, только если свойства CompilationStatus и TestStatus имеют значение Succeeded, задайте этому свойству значение False. Чтобы разрешить возврат файлов вне зависимости от этих свойств, задайте значение True.

    Примечание

    Действие SetBuildProperties позволяет задать значения свойств CompilationStatus и TestStatus.

  • UpdateWorkItems (String). Если требуется заполнить поле Fixed In связанных рабочих элементов номером построения, следует задать для этого свойства значение True. В противном случае задайте False.

К началу

Оценка политик возврата (действие EvaluateCheckInPolicies)

Для выполнения политик возврата на сервере построения используется действие EvaluateCheckInPolicies. Это действие выполняет политики, которые действуют в папках, указанных на вкладке Рабочая область определения построения. Построение завершается ошибкой, если политики возврата завершаются ошибкой. Причиной может быть CheckInShelveset (построение с условным возвратом) или ValidateShelveset (закрытое построение).

Важно!

Политики возврата оцениваются на сервере построения, а не на клиентском компьютере.

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

  • встроенная политика возврата Work Items;

  • пользовательские политики возврата, созданные для выполнения оценки на сервере построения.

Это действие не подходит для оценки встроенных политик возврата Builds и Code Analysis, поскольку более эффективно выполнять эти процессы непосредственно в сборке, используя действия MSBuild и MSTest.

Дополнительные сведения см. в следующих ресурсах:

Свойства-аргументы действия EvaluateCheckInPolicies

  • Workspace (Workspace). Необходимо задать рабочую область, которую требуется оценить. В большинстве случаев необходимо присвоить этому свойству ссылку на переменную, инициализированную в свойстве Result действия CreateWorkspace. При создании процесса построения на основе файла DefaultTemplate.xaml, вероятно, следует использовать переменную Workspace.

К началу

Назначение меток файлам в системе управления версиями

С помощью действий Team Foundation Build можно назначать файлам метки.

  • Назначение меток исходному коду, для которого выполняется построение

  • Назначение меток файлам

Назначение меток исходному коду, для которого выполняется сборка (действие LabelWorkspace)

Назначайте метки файлам исходного кода в системе контроля версий. Это позволит членам команды легко понимать, какая версия каждого файла включена в данное завершенное построение. Действие LabelWorkspace позволяет включить этот шаг в процесс построения.

Свойства-аргументы действия LabelWorkspace

  • Name (String). Необходимо указать имя метки.

  • Child (LabelChildOption). Это свойство позволяет задать способ обработки элементов, уже имеющих метки, совпадающие с указанными. Это свойство является аналогом параметра /child команды tf label.

  • Workspace (Workspace). Необходимо предоставить ссылку на рабочую область построения. В большинстве случаев необходимо присвоить этому свойству ссылку на переменную, инициализированную в свойстве Result действия CreateWorkspace. При создании процесса построения на основе файла DefaultTemplate.xaml, вероятно, следует использовать переменную Workspace.

  • Comment (String). Это свойство позволяет задать комментарий к метке. Это свойство является аналогом параметра /comment команды tf label.

  • Scope (String). Это свойство позволяет задать область для метки. Это свойство является аналогом аргумента @scope команды tf label.

Дополнительные сведения о параметрах tf label см. в разделе Label Command (Team Foundation Version Control).

К началу

Назначение меток файлам (действие LabelSources)

Действие LabelSources позволяет назначать метки файлам в системе управления версиями.

Совет

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

Свойства-аргументы действия LabelSources

  • Items (IEnumerable<String>). Необходимо указать элементы, которым требуется назначить метку. Каждый объект String является аналогом аргумента itemspec команды tf label.

  • Name (String). Необходимо указать имя метки.

  • Scope (String). Необходимо задать область для метки. Это свойство является аналогом аргумента @scope команды tf label.

  • Recursion (RecursionType). Это свойство позволяет задать значение Microsoft.TeamFoundation.VersionControl.Client.RecursionType.Full, если требуется назначить метки всем файлам в иерархии каталогов. В противном случае можно указать Microsoft.TeamFoundation.VersionControl.Client.RecursionType.OneLevel.

  • Version (String). Выберите версию элементов, которым требуется назначить метку. Это свойство является аналогом параметра /version команды tf label.

  • Child (LabelChildOption). Это свойство позволяет задать способ обработки элементов, уже имеющих метки, совпадающие с указанными. Это свойство является аналогом параметра /child команды tf label.

  • Comment (String). Это свойство позволяет задать комментарий к метке. Это свойство является аналогом параметра /comment команды tf label.

Дополнительные сведения о параметрах tf label см. в разделе Label Command (Team Foundation Version Control).

К началу

Получение списка наборов отложенных изменений (действие QueryShelvesets)

Действие QueryShelvesets используется для получения списка наборов отложенных изменений, удовлетворяющих указанным критериям. Затем можно использовать действие TfUnshelve для получения содержимого всех наборов отложенных изменений.

Результат QueryShelvesets (IList<Shelveset>)

Свойства-аргументы действия QueryShelvesets

  • Name (String). Необходимо указать Name.

  • Owner (String). Необходимо указать Owner.

  • VersionControlServer (VersionControlServer). Необходимо указать VersionControlServer.

Действие TfGet

Это действие создает оболочку Команда Get.

Действие TfResolve

Это действие создает оболочку Resolve Command.

Действие TfShelve

Это действие создает оболочку Команда Shelve.

Действие TfUndo

Это действие создает оболочку Команда undo.

Действие TfUnshelve

Это действие создает оболочку Команда Unshelve.

Действие TfWorkfold

Это действие создает оболочку Workfold Command.

Использование рабочих элементов

Для работы с рабочими элементами можно использовать следующие действия Team Foundation Build:

  • Связывание наборов изменений и наборов рабочих элементов с построением

  • Создать рабочий элемент

Создание рабочего элемента (действие OpenWorkItem)

Действие OpenWorkItem предназначено для создания рабочего элемента.

Свойство Result действия OpenWorkItem (WorkItem)

Возвращает новый рабочий элемент.

Свойства-аргументы действия OpenWorkItem

  • AssignedTo (String). Необходимо задать лицо, которому требуется назначить рабочий элемент.

  • Title (String). Необходимо задать название рабочего элемента.

  • Type (String). Необходимо задать тип рабочего элемента. Обычно значение свойства Type включает следующие варианты: “Bug”, “Issue” и “Task”.

  • Comment (String). Это свойство позволяет добавить комментарий к журналу рабочего элемента.

  • CustomFields (IDictionary<String,String>). Это свойство позволяет задать значение одного или нескольких дополнительных полей рабочего элемента.

К началу

Работа с символьными данными

Для работы с символьными данными в Team Foundation Build предназначены два действия: IndexSources и PublishSymbols.

Обычно они используются для поддержки отладки IntelliTrace. Если требуется включить отладку IntelliTrace, необходимо сначала вызвать действие IndexSources для подготовки символьных данных пользователя, после чего вызвать действие PublishSymbols для публикации данных в хранилище символов SymStore.

Дополнительные сведения об отладке IntelliTrace см. в разделе Отладка приложения путем записи выполнения кода с помощью IntelliTrace.

Внедрение версий и путей системы контроля версий в символьные данные PDB-файлов (действие IndexSources)

Действие IndexSources можно использовать для внедрения версий и путей системы контроля версий в символьные данные в PDB-файлах.

Свойства-аргументы действия IndexSources

  • FileList (IEnumerable<String>). Необходимо задать полный путь и имя каждого символьного файла. Предоставить этот аргумент можно с помощью действия FindMatchingFiles.

    Параметр ** служит для указания на рекурсивный поиск. Например, можно вызвать действие FindMatchingFiles со следующим значением свойства MatchPattern: String.Format("{0}\**\*.pdb", BinariesDirectory).

К началу

Публикация символов в хранилище символов SymStore (действие PublishSymbols)

Действие PublishSymbols предназначено для публикации символьных данных, находящихся в PDB-файлах, в хранилище символов SymStore. Это действие представляет собой программу-оболочку для SymStore.exe. Дополнительные сведения о хранилищах символов SymStore и их подготовке см. в разделе Индексация и публикация символьных данных.

Важно!

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

Свойство Result действия PublishSymbols (String)

Возвращает идентификатор транзакции, возвращаемый программой SymStore.exe.

Свойства-аргументы действия PublishSymbols

  • FileList (IEnumerable<String>). Необходимо задать полный путь и имя каждого символьного файла. Предоставить этот аргумент можно с помощью действия FindMatchingFiles.

    Например, можно вызвать действие FindMatchingFiles со следующим значением свойства MatchPattern: String.Format("{0}\**\*.pdb", BinariesDirectory).

  • StorePath (String). Необходимо задать UNC-путь к корневому каталогу хранилища символов SymStore.

  • CommandLineArguments (String). Сведения о дополнительных аргументах, которые можно передавать программе SymStore.exe, см. в разделе о параметрах командной строки SymStore.

  • Comments (String). Это свойство позволяет задать комментарии к транзакции, которые записываются в файл журнала транзакций в хранилище символов. Это свойство является аналогом параметра /c Comment команды SymStore.exe. Дополнительные сведения см. в разделе о параметрах командной строки SymStore.

  • ProductName (String). Это свойство позволяет задать имя продукта, которое записывается в файл журнала транзакций в хранилище символов. Например, можно задать это свойство равным имени определения построения (Name), которое можно получить из свойства BuildDefinition, вызвав действие GetBuildDetail. Это свойство является аналогом параметра /t Product команды SymStore.exe. Дополнительные сведения см. в разделе о параметрах командной строки SymStore.

  • StoreCompressed (Boolean). Если значение этого свойства равно True, файлы в хранилище символов хранятся сжатыми. В противном случае файлы хранятся несжатыми. Это свойство является аналогом параметра /compress команды SymStore.exe. Дополнительные сведения см. в разделе о параметрах командной строки SymStore.

  • Version (String). Например, можно задать это свойство равным номеру определения построения (BuildNumber), который можно получить, вызвав действие GetBuildDetail. Это свойство является аналогом параметра /v Version команды SymStore.exe. Дополнительные сведения см. в разделе о параметрах командной строки SymStore.

К началу

Получение ссылок на полезные объекты

С помощью действий Team Foundation Build можно получать ссылки на полезные объекты.

Получение ссылки на объект коллекции командного проекта (действие GetTeamProjectCollection)

Действие GetTeamProjectCollection позволяет получить из свойства Result ссылку на объект TfsTeamProjectCollection. Это важный начальный объект. Например, его можно использовать для подключения к серверу уровня приложений для Team Foundation.

Получение ссылки на объект IBuildAgent (действие GetBuildAgent)

Действие GetBuildAgent позволяет получить из свойства Result ссылку на объект IBuildAgent. Это действие можно использовать только внутри действия AgentScope.

Получение ссылки на объект IBuildDetail (действие GetBuildDetail)

Действие GetBuildDetail позволяет получить из свойства Result ссылку на объект IBuildDetail. С помощью этого объекта можно получать, а при некоторых обстоятельствах и задавать, данные о текущем построении.

К началу

Получение ссылки на объект BuildEnvironment (действие GetBuildEnvironment)

Действие GetBuildEnvironment позволяет получить из свойства Result ссылку на объект BuildEnvironment. Это свойство обычно применяется для выполнения следующих задач:

  • Объект Environment используется для определения, запущена ли данная часть построения на контроллере построений или на агенте построения.

  • Объект CustomAssemblyPath используется для получения пути к сборкам на агенте построения, содержащим пользовательские действия.

К началу

Действия, изменение которых не предполагается в настраиваемом процессе сборки

В настраиваемом процессе сборки не предусмотрено изменение некоторых действий.

ApproveRequestForCheckIn

Это действие следует игнорировать.

К началу

Действие CreateWorkspace

Это действие следует игнорировать.

К началу

Действие DeleteWorkspace

Это действие следует игнорировать.

К началу

GenerateRunSettings

Это действие следует игнорировать.

К началу

GetApprovedRequests

Это действие следует игнорировать.

К началу

GetPendingChanges

Это действие следует игнорировать.

К началу

GetRejectedRequests

Это действие следует игнорировать.

К началу

GetReshelvedShelveset

Это действие следует игнорировать.

К началу

GetShelvedChanges

Это действие следует игнорировать.

К началу

GetWorkspace

Это действие следует игнорировать.

К началу

ParseWorkspaceSpec

Это действие следует игнорировать.

К началу

RejectRequestFromCheckIn

Это действие следует игнорировать.

К началу

RetryRequest

Это действие следует игнорировать.

К началу

RetryRequests

Это действие следует игнорировать.

К началу

RevertWorkspace

Это действие следует игнорировать.

К началу

RunOnce

Не описывается в текущем выпуске.

SyncWorkspace

Это действие следует игнорировать.

К началу

SynchronizeRequests

Это действие следует игнорировать.

К началу

Действие TfsBuild

Это действие следует игнорировать.

К началу

TfQueryConflicts

Это действие следует игнорировать.

К началу

См. также

Основные понятия

Использование шаблона по умолчанию для процесса сборки

Развертывание и настройка контроллера сборок

Развертывание и настройка агентов сборки

Другие ресурсы

Visual Studio 2010 Workflow Designer

Windows Workflow Foundation

Справочные сведения о MSBuild

Просмотр результатов сборки