Определение процесса построения с условным возвратом для проверки изменений

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

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

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

  • Определение процесса построения с условным возвратом

  • Правила повышения функциональности и производительности процесса построения

  • Избежание блокирования работы команды

  • Ручной запуск построения с условным возвратом и частного построения

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

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

Диалоговое окно "Условный возврат"

Для завершения возврата построение должно пройти успешно.Дополнительные сведения см. в разделе Возврат ожидающих изменений под управлением построения с условным возвратом.

Если кому-то из пользователей требуется возможность обхода условного возврата, можно задать для разрешения Переопределение проверки возврата по построению соответствующей группы пользователей значение Разрешить.Дополнительные сведения см. в разделе Разрешения Team Foundation Server.

Определение процесса построения с условным возвратом

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

Для выполнения данной процедуры необходимо задать для разрешения Редактировать определение построения значение Разрешить.Дополнительные сведения см. в разделе Разрешения Team Foundation Server.

Определение построения с условным возвратом

  1. В командном обозревателе выполните следующее.

    1. Если вы еще не подключены к командному проекту, в котором вы должны работать, подключитесь к командному проекту.

    2. Выберите Значок "Начало"Главная, а затем выберите Значок построенийПостроения.

    3. На странице Построения выберите Новое определение построения.

    Откроется окно Определение построения.

  2. На вкладке Триггер:

    • Выберите Условный возврат.

    • (Необязательно) Для повышения эффективности процесса построения выберите Слияние и построение до n представлений Дополнительные сведения см. в разделе Избежание блокировки в команде.

  3. На вкладке Рабочая область в таблице Рабочие папки сопоставьте папки управления версиями, которые будет контролировать данное определение построения, с локальными папками на агенте построения.

    СоветСовет

    Соблюдайте следующие правила.

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

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

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

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

  5. На вкладке Процесс в Шаблон процесса построения, шаблон по умолчанию выбирается по умолчанию.Укажите в параметре Элементы для построения решения или проекты кода, которые нужно построить.

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

    Дополнительные сведения см. в разделе Правила повышения функциональности и производительности процесса построения далее в этом разделе.

  7. Укажите параметры процесса построения на других вкладках.Дополнительные сведения см. в разделе Создание определения построения.

Правила повышения функциональности и производительности процесса построения

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

Обязательный узел

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

    • если пара платформа-конфигурация строится быстрее, чем другие пары, следует указать ее в значении данного параметра;

    • укажите как можно меньше пар платформа-значение.

Основной узел

  • Очистить рабочую область: Для повышения производительности, установите это свойство в значение Нет (рекомендовано) или Выходные данные.Однако команда вероятнее всего пропустит дефекты кода некоторых типов, например, добавленные во время рефакторинга, при отмене очистки рабочей области.Дополнительные сведения см. в разделе Определение процесса построения, основанного на шаблоне по умолчанию.

  • Выполнить анализ кода: Для повышения производительности, установите это свойство в значение Никогда.

  • Параметры сервера символов и источников, Индексация источников: Для повышения производительности, установите это свойство в значение Ложь.

Дополнительный узел

  • Параметры агента

    • Фильтр имен или Фильтр тегов. Используйте имя или тег агента построения для привязки этого определения построения к агенту построения, специально предназначенному для запуска этого построения.Агент построения должен запускаться на компьютере построения, мощности оборудования которого хватает для оперативной обработки построения в соответствии с ожидаемой производительностью команды.

      К примеру, 15-минутное ожидание завершения построения обычно не является проблемой.Но по всей вероятности, разработчик не захочет ждать 8 часов перед тем, как можно будет определить, был ли успешно возвращен ваш код.

    • Максимальное время выполнения: Задайте для этого параметра разумно приемлемое времяК примеру, 15 минут могут не представлять для команды никакой проблемы, а восемь часов — уже слишком много.

  • Создать рабочий элемент при ошибке. Система получает это значение как False, даже если вы задали значение True.

  • Отключение тестов:

    • Для повышения производительности выберите Истина.

    • Если код должен вызывать некоторые тесты, выберите Ложь, а затем определите набор тестов для запуска в построении.Можно улучшить производительность, запустив только тесты, которые необходимы.Чтобы назначить эти тесты, отфильтруйте их по категориям или по приоритетам.Дополнительные сведения см. в разделе Выполнение тестов в процессе построения.

  • Пометка источников: задайте для этого параметра значение Ложь.

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

Избежание блокирования работы команды

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

  • Для повышения эффективности процесса построения на вкладке Триггер выберите параметр Слияние и построение до n представлений и задать максимальное количество возвратов, которые вы хотите построить вместе в любой предоставленном пакете.Как правило, вы не слишком рискуете, используя этот параметр.Каждый возврат по отдельности фиксируется или отклоняется.

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

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

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

  • Выделите отдельный мощный компьютер, — например, с быстрым процессором и жестким диском, — для агента построения, который используется определением построения с условным возвратом.

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

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

  • Система возвращает изменения (ручное построение с условным возвратом): Этот параметр может быть полезен для команд, которые не хотят быть зависимыми от условного возврата, но по-прежнему хотят позволять разработчикам добровольно проверять их код перед возвратом.

  • Система не возвращает изменения (закрытое построение). Разработчик может использовать этот параметр, если необходимо проверить некоторые изменения в наборе отложенных изменений, но не возвращать их код.

Дополнительные сведения см. в разделе Помещение построения в очередь.