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


Действия построения Team Foundation

Действия 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 можно выполнить следующие действия:

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

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

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

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

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

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

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifПолучение значений переменных среды (действие ExpandEnvironmentVariables)

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

Свойство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<TKey, TValue><String,String>). Можно задать объект IDictionary, содержащий любые дополнительные переменные (в качестве ключей), для которых нужно получить соответствующие значения.

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifПроверка переменных на значения NULL

Gg265783.collapse_all(ru-ru,VS.110).gifIsNotNull<T>

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

Gg265783.collapse_all(ru-ru,VS.110).gifIsNull<T>

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

Gg265783.collapse_all(ru-ru,VS.110).gifПолучение путей к файлам в рабочей области

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

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

СоветСовет

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

Gg265783.collapse_all(ru-ru,VS.110).gifПолучение пути к файлу в рабочей области (действие 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.

Gg265783.collapse_all(ru-ru,VS.110).gifПолучение путей к файлам в рабочей области (действие ConvertWorkspaceItem)

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

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

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

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

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

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

    СоветСовет

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

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

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifРабота с каталогами

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

СоветСовет

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

Gg265783.collapse_all(ru-ru,VS.110).gifСоздание каталога (действие CreateDirectory)

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

Gg265783.collapse_all(ru-ru,VS.110).gifКопирование каталога (действие CopyDirectory)

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

Gg265783.collapse_all(ru-ru,VS.110).gifУдаление каталога (действие DeleteDirectory)

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

Gg265783.collapse_all(ru-ru,VS.110).gifПолучение пути к рабочему каталогу агента построения (действие GetBuildDirectory)

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifУправление сведениями о пути

Gg265783.collapse_all(ru-ru,VS.110).gifДействие 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

Gg265783.collapse_all(ru-ru,VS.110).gifДействие GetCommonServerPath

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

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

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

$/TestScrum/Main

Gg265783.collapse_all(ru-ru,VS.110).gifЗагрузка файлов, не находящихся в рабочей области

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

Gg265783.collapse_all(ru-ru,VS.110).gifДействие 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.Для использования этого действия нужно создать пользовательское действие, предоставляющее эту функциональность.

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifДействие DownloadFile

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

Gg265783.collapse_all(ru-ru,VS.110).gifПоиск файлов (действие FindMatchingFiles)

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

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

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

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

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifЗапись предупреждений, ошибок, сообщений и других данных в журнал построения

Gg265783.collapse_all(ru-ru,VS.110).gifWriteCustomSummaryInformation

Используйте действие 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 первого экземпляра в шаблоне процесса построения.

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifДействие WriteBuildMessage

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

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

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

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifДействие WriteBuildWarning

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifДействие WriteBuildError

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifДействие WriteBuildTestError

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifДействие 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, информация отобразится без отступа.

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifЗапись метаданных построения в хранилище данных

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

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

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

СоветСовет

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

Gg265783.collapse_all(ru-ru,VS.110).gifЗапись номера построения (действие UpdateBuildNumber)

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

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

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

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

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

Свойства UpdateBuildNumber

  • BuildNumberFormat (String). Необходимо предоставить выражение, задающее формат номера построения.Дополнительные сведения о синтаксисе этого выражения см. в разделе Работа с номерами построений.

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifЗапись ключевых точек данных построения (действие 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 позволяют контролировать процесс построения следующими способами:

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

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifЗапуск действий агента построения (действие 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. Это свойство следует игнорировать.

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifИспользование именованной структуры мьютекса для реализации потокобезопасного процесса (действие SharedResourceScope)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дополнительные сведения об использовании этой структуры см. в разделе Перемещение по сложным рабочим процессам Windows.

Свойства-аргументы действия 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.

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifОграничение разделов процесса построения на основе причин (триггеров) (действие InvokeForReason)

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

К началу

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

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

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

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifИспользование 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<T><String>). Это свойство позволяет задать целевые объекты для построения.

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

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

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

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

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifВыполнение тестов

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

Gg265783.collapse_all(ru-ru,VS.110).gifВыполнение тестов с помощью действия RunTests

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Делегаты

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

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifВыполнение тестов с помощью действия MSTest

Это действие используется для запуска тестов с помощью MSTest.exe.Дополнительные сведения, например о преимуществах и недостатках этого средства выполнения тестов см. в разделе Выполнение тестов в процессе построения.

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

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

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

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

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

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

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

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

    • TestMetadata (String). Необходимо указать файл метаданных, содержащий списки тестов, которые требуется запустить.Это свойство является аналогом параметра /testmetadata команды MSTest.exe.Дополнительные сведения см. в разделе /testmetadata.

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

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

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

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

    СоветСовет

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

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

  • TestNames (IEnumerable<String>). Это свойство позволяет задать имена тестов, которые требуется запустить.Это свойство является аналогом параметра /test команды 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 автоматически определяет путь на основе данных, содержащихся в списках тестов или в тестовых контейнерах.

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifПолучение списка тестов, которые затрагивает построение (действие GetImpactedTests)

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

ПримечаниеПримечание

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

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

Действие 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<T><Changeset>). Это свойство позволяет задать наборы изменений, которые требуется связать с результатами влияния на тесты.Обычно требуется указать наборы изменений, относящихся к построению.ссылку на эти наборы изменений можно получить с помощью действия AssociateChangesetsAndWorkItems.

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

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

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifЗапуск процесса (действие InvokeProcess)

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

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

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

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

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

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

  • EnvironmentVariables (IDictionary<TKey, TValue><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 можно выполнить следующие действия, связанные с управлением версиями:

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

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

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifСвязывание наборов изменений и наборов рабочих элементов с построением (действие AssociateChangesetsAndWorkItems)

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

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

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

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

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

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

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

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifВозврат собранных изменений (действие CheckInGatedChanges)

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

ПримечаниеПримечание

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

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

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

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

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

    ПримечаниеПримечание

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

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifОценка политик возврата (действие EvaluateCheckInPolicies)

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

Важное примечаниеВажно

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

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

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

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

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

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

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

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifНазначение меток файлам в системе управления версиями

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

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifНазначение меток исходному коду, для которого выполняется построение (действие 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).

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifНазначение меток файлам (действие 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).

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifПолучение списка наборов отложенных изменений (действие QueryShelvesets)

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

QueryShelvesets Result (IList<T><Shelveset>)

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

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

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifДействие TfGet

Это действие создает Команда Get.

Gg265783.collapse_all(ru-ru,VS.110).gifДействие TfResolve

Это действие создает Resolve Command.

Gg265783.collapse_all(ru-ru,VS.110).gifДействие TfShelve

Это действие создает Команда Shelve.

Gg265783.collapse_all(ru-ru,VS.110).gifДействие TfUndo

Это действие создает Команда undo.

Gg265783.collapse_all(ru-ru,VS.110).gifДействие TfUnshelve

Это действие создает Команда Unshelve.

Gg265783.collapse_all(ru-ru,VS.110).gifДействие TfWorkfold

Это действие создает Workfold Command.

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

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

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifСоздание рабочего элемента (действие OpenWorkItem)

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

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

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

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

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

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

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

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

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

К началу

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

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

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifВнедрение версий и путей системы контроля версий в символьные данные в PDB-файлах (действие IndexSources)

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

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

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

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifПубликация символов в хранилище символов 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 Command-Line Options.

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

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

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

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

К началу

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

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

Gg265783.collapse_all(ru-ru,VS.110).gifПолучение ссылки на объект коллекции командного проекта (действие GetTeamProjectCollection)

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

Gg265783.collapse_all(ru-ru,VS.110).gifПолучение ссылки на объект IBuildAgent (действие GetBuildAgent)

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

Gg265783.collapse_all(ru-ru,VS.110).gifПолучение ссылки на объект IBuildDetail (действие GetBuildDetail)

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifПолучение ссылки на объект BuildEnvironment (действие GetBuildEnvironment)

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

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

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

К началу

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

Некоторые действия не предназначены для изменения в пользовательском процессе построения.

Gg265783.collapse_all(ru-ru,VS.110).gifApproveRequestForCheckIn

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifCreateWorkspace

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifДействие DeleteWorkspace

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifGenerateRunSettings

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifGetApprovedRequests

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifGetPendingChanges

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifGetRejectedRequests

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifGetReshelvedShelveset

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifGetShelvedChanges

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifДействие GetWorkspace

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifParseWorkspaceSpec

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifRejectRequestFromCheckIn

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifRetryRequest

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifRetryRequests

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifДействие RevertWorkspace

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifRunOnce

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

Gg265783.collapse_all(ru-ru,VS.110).gifДействие SyncWorkspace

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifSynchronizeRequests

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifTfsBuild

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

К началу

Gg265783.collapse_all(ru-ru,VS.110).gifTfQueryConflicts

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

К началу

См. также

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

Перемещение по сложным рабочим процессам Windows

Определение процесса построения, основанного на шаблоне по умолчанию

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

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

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

Visual Studio 2010 Workflow Designer

Windows Workflow Foundation

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

Просмотр результатов построения