В VSTS есть два типа инструментов для поддержки
Функциональность ею предоставляемая в большинстве своем является стандартной, поэтому более подробно мы остановимся на следующих ее особенностях:
.
(рис 14.1) Check-in диалогНа первый взгляд диалог выгляди достаточно стандартно – список файлов и поля для внесения комментариев к вносимым файлам. Однако в глаза бросается панель с дополнительными закладками в левой части окна. Именно эта панель и позволяет получить доступ к специфической функциональности.
Наиболее востребованной является поддержка в TFS возможности связи вносимых изменений с элементами работы, которую можно выполнить на закладке
(рис 14.2) Закладка Work ItemsРазработчик, который вносит изменения в файлы с исходными текстами, может найти соответствующие этим изменениям элементы работы (ведь он либо исправлял какую-нибудь ошибку, либо выполнял задачу и т.п.), используя любой из доступных запросов, а также текстовый поиск. Запрос задается в секции
(рис 14.3) Закладка Check-in NotesВ момент внесения изменений или после к нему могут быть присоединены дополнительные комментарии людей, проинспектировавших данное изменение (рис 14.3). По умолчанию TFS предполагает три вида инспекций – инспекцию кода, инспекцию безопасности и инспекцию
(рис 14.4) Закладка Policy WarningsИнтересным нововведение TFS как системы
(рис 14.5) Свойства набора измененийБольшинство свойств пакета изменений можно изменить в дальнейшем в окне редактирования пакета изменений (рис 14.5). Единственное свойство, которое нельзя изменить из этого окна – ассоциации с элементами работы. Для установки ассоциаций элемента работы и пакета изменений необходимо обратится к редактору элемента работы.
Правила внесения изменений. Одним из наиболее существенных преимуществ TFS как системы
Правила задаются с помощью специального вида .NET сборок, реализующих определенные интерфейсы. Несколько правил поставляется вместе с самим TFS, огромное количество правил реализовано сообществом разработчиков и находится в открытом доступе. Если же найти идеально подходящее правило так и не удалось, в
В стандартную поставку TFS входят следующие правила:
В пакете
Среди правил, доступных в открытом доступе можно выделить:
Выбрать список правил, применяемых для командного проекта можно с помощью окна настройки системы
(рис 14.6) Редактирование правил вноса измененийСледует заметить, что достаточно часто при разработке случаются ситуации, когда изменение необходимо срочно внести и на удовлетворение всех правил времени нет, либо конкретное правило не может быть выполнено по объективным причинам. В этом случае разработчик имеет право отменить правила для своего пакета изменений, написав при этом комментарий с объяснением причин отмены (рис 14.7).
(рис 14.7) Диалог Policy Failure ), позволяющий выбрать путь, куда следует скопировать (ответвить) выбранные файлы. После выполнения этой команды в системе
(рис 14.8) Создание новой ветвиЗаметим, что после создания ветви она не попадает автоматически на сервер. Чтобы ветвь попала на сервер и стала доступна всем, необходимо выполнить операцию внесения изменений (рис 14.9).
(рис 14.9) Внесение изменений ответвленияГораздо более сложной, как правило, является операция переноса изменений из ветви в ветвь. Для выполнение этой операции (команда Merge ) используется специальный мастер, позволяющий разработчику задать необходимые параметры слияния за несколько шагов.
(рис 14.10) Область интеграцииНа первом шаге (рис 14.10) разработчик задает откуда ( source branch ) и куда ( target branch ), а также изменения из какой области он хочет перенести (все вплоть до определенной версии, или только выбранные пакеты изменений).
(рис 14.11) Версия для интеграцииВ случае, если разработчик выбрал перенос всех изменений, ему предлагается выбрать версию исходной ветви вплоть до которой изменения нужно перенести (рис 14.11). Разработчик может выбрать полный перенос, перенос до определенной даты, все предшествующие определенному пакету изменения, либо интеграцию до тех версий, которые находятся в текущем локальном
(рис 14.12) Выбор пакетов для интеграцииВ случае, если разработчик выбрал интеграцию по пакетам изменений, ему предоставляется выбор среди не интегрированных пакетов (рис 14.12), и он может выбрать один или несколько из них.
Так же как и при создании новых ветвей, при выполнении интеграции необходимо в явном виде внести пакет изменений, применив к нему все настроенные правила и ассоциировав с соответствующим элементом работы.
(рис 14.13) Список конфликтовДостаточно часто при интеграции может возникнуть ситуация конфликта изменений, когда интегрируемый файл поменялся в обоих ветвях независимо друг от друга. В этом случае
Разработчик может выбрать автоматический способ разрешения, который сработает только для тех файлов, в которых были изменены разные части. В случае, если автоматическое разрешение невозможно, система откроет диалог ручного разрешения – см. рис 14.14.
(рис 14.14) Разрешение конфликтаДля разрешения конкретного конфликта разработчик может выбрать несколько способов: автоматически объединить изменения (если возможно), принять изменения из исходной ветки, сохранить изменения целевой ветки или вручную разрешить все внутренние конфликты в специальном инструменте рис 14.15.
(рис 14.15) Разрешение внутренних конфликтовСледует оговорится, что данный инструмент имеет достаточно ограниченную функциональность, поэтому некоторые разработчики предпочитаются использовать аналогичные инструменты других производителей.
Сохранение без внесения. Полезной возможностью системы
Эта функциональность позволяет защитить важный пакет изменения от потери, если разработчик вынужден временно приостановить работу (например, чтобы поспать). Находясь на сервере эти изменения подпадают под политику создания резервных копий базы данных и, следовательно,
Еще одним способом применение данной возможности является перенос изменений между разными машинами, в том случае, если разработчик использует несколько машин (например, рабочую или домашнюю). Сохраненные на сервере изменения разработчик сможет получить на другой машине в том же виде, чтобы продолжить работу, где бы он ни находился.
(рис 14.16) Сохранение без внесенияДля сохранения изменений служит команда , аналогичный диалогу внесения изменений за исключением поля для введения имени сохраненного пакета в верхней части и двух следующих дополнительных опций в нижней части.
(рис 14.17) Список текущих измененийДля того, чтобы восстановить сохраненные изменения необходимо воспользоваться командой ). Эта команда открывает диалог восстановления изменений (рис 14.18), позволяющий выбрать один из сохраненных пакетов для восстановления. Из этого же диалога пакеты можно удалить, если они потеряют актуальность.
(рис 14.18) Диалог восстановления измененийОбщее. Одним из существенных преимуществ TFS по сравнению с другими системами управления
Очевидным преимуществом TFS здесь является то, что описание простого процесса сборки создается меньше чем за минуту, а описание более сложных создаются не сложнее, чем с помощью стандартного MsBuild.
).
(рис 14.19) Общие настройки описания сборкиНа первой закладке ( General ) находится общая информация – название и описание назначения этого сценария сборки.
(рис 14.20) Настройка рабочего пространстваНа второй закладке ( – описывается то, какие исходные тексты необходимо взять из системы
(рис 14.21) Выбор или создание MsBuild-проектаНаиболее интересной является третья закладка ), где разработчик может выбрать один из существующих MsBuild-сценариев сборки или создать новый.
(рис 14.22) Правила сохраненияВ TFS 2008, в связи с реализацией функциональности по непрерывной интеграции, возникла проблема большого числа описаний сборок и результатов, сохраненных в системе и на диске. Для устранения проблемы был реализован механизм автоматической очистки, получившей название Retention
Полезной функцией является то, что политику уничтожения результатов можно отключить для конкретной сборки используя опцию Retain Indefinitely. Результаты, помеченные этой опцией, сохраняются в системе навсегда (или пока опция не будет снята).
(рис 14.23) Выбор агентаНа закладке ) мы задаем свойства окружения, которое будет использовано для автоматического запуска процесса сборки. Главным здесь является сборочный агент – процесс, в рамках которого будет выполняться процесс сборки.
Кроме того, именно на этой закладке можно задать сетевую разделяемую папку, в которой будут храниться результаты процесса сборки. При выборе папки нужно убедиться, что сборочный агент имеет к ней доступ на запись.
(рис 14.24) Задание триггераНа заключительном этапе настройки процесса сборки (см. рис 14.24) мы задаем условие, при выполнении которого процесс сборки, определенный данным описанием, должен выполняться. Это условие может быть одним из следующих:
– 14.27).
(рис 14.25) Выбор решенийНа первом шаге (рис 14.25) мы выбираем в системе
(рис 14.26) Выбор конфигурацийНа втором шаге (см. рис 14.26) мы выбираем те конфигурации в этих решениях, которые нужно собирать.
(рис 14.27) Выбор тестов и правил анализаИ, наконец, на третьем шаге (рис 14.27) мы выбираем те тесты, которые мы хотим запустить и отмечаем, хотим ли мы проводить статический анализ кода. В отличии от TFS 2005, где при выборе тестов можно было использовать только заранее подготовленные тестовые пакеты, в TFS 2008 появилась такая востребованная возможность как автоматическое подключение пакетов тестов по метке имени (обычно сборки начинающиеся или заканчивающиеся на Test). Эта возможность позволяет без дополнительных затрат включить выполнение модульных тестов в автоматическую сборку.
Создание сборочного агента. Появление сборочных агентов в TFS 2008 позволило значительно расширить возможности конфигурации автоматического выполнения процесса сборки. Сборочный агент – это процесс, запущенный на некоторой выделенной машине, в рамках которого и происходит автоматическая сборка. На самом деле, сборочные агенты выполняются процессом TFSBuild, запущенным в виде сервера или
Одна машина может размещать у себя несколько процессов TFSBuild, каждый из которых доступен как Web-сервис на определенном порту. При этом каждый процесс TFSBuild может содержать несколько сборочных агентов, которые отличаются именами и рабочими папками, в которых они выполняют сборку.
Несмотря на сложность описанного процесса, настройка его достаточно проста и производится, в основном, с помощью окна свойств агента (см. рис 14.28).
(рис 14.28) Свойства сборочного агента.
(рис 14.29) Запуск новой сборкиПри запуске новой сборки пользователь может выбрать описание сборки, сборочного агента (по умолчанию используется агент, заданный в описании), папку для хранения результатов (так же берется по умолчанию из описания), приоритет и позицию в очереди (каждый сборочный агент может выполнять не более одной сборки за раз), а также дополнительные параметры командной строки для MsBuild. Как правило, в приведенном окне можно использовать все настройки по умолчанию, менять которые приходится только в особых случаях.
(рис 14.30) Список описаний сборокПосле того, как сборка помещена в очередь, она отображается в списке сборок (рис 14.30), откуда можно перейти к окну с детальной информацией о сборке (рис 14.31). В этом окне отображается ход сборки, или её результаты, если она завершена.
Пример на рис 14.31 наглядно демонстрирует средства
(рис 14.31) Результаты сборкиУправление процессом сборки. Все продемонстрированные нами средства визуального описания сборок доступны не только при создании такого описания, но и для любого из существующих описаний сборок (команда Edit Build Definition ). Единственным исключением является файл MsBuild, который, будучи однажды сгенерирован с помощью мастера, далее поддерживается вручную.
Этот файл можно найти в системе
(рис 14.32) Файл определения проектаЗаметим, что для большинства простых проектов обычно хватает настроек, доступных через визуальные редакторы, и изменять эти файлы приходится относительно редко.
В VSTS есть два типа инструментов для поддержки
Функциональность ею предоставляемая в большинстве своем является стандартной, поэтому более подробно мы остановимся на следующих ее особенностях:
.
(рис 14.1) Check-in диалогНа первый взгляд диалог выгляди достаточно стандартно – список файлов и поля для внесения комментариев к вносимым файлам. Однако в глаза бросается панель с дополнительными закладками в левой части окна. Именно эта панель и позволяет получить доступ к специфической функциональности.
Наиболее востребованной является поддержка в TFS возможности связи вносимых изменений с элементами работы, которую можно выполнить на закладке
(рис 14.2) Закладка Work ItemsРазработчик, который вносит изменения в файлы с исходными текстами, может найти соответствующие этим изменениям элементы работы (ведь он либо исправлял какую-нибудь ошибку, либо выполнял задачу и т.п.), используя любой из доступных запросов, а также текстовый поиск. Запрос задается в секции
(рис 14.3) Закладка Check-in NotesВ момент внесения изменений или после к нему могут быть присоединены дополнительные комментарии людей, проинспектировавших данное изменение (рис 14.3). По умолчанию TFS предполагает три вида инспекций – инспекцию кода, инспекцию безопасности и инспекцию
(рис 14.4) Закладка Policy WarningsИнтересным нововведение TFS как системы
(рис 14.5) Свойства набора измененийБольшинство свойств пакета изменений можно изменить в дальнейшем в окне редактирования пакета изменений (рис 14.5). Единственное свойство, которое нельзя изменить из этого окна – ассоциации с элементами работы. Для установки ассоциаций элемента работы и пакета изменений необходимо обратится к редактору элемента работы.
Правила внесения изменений. Одним из наиболее существенных преимуществ TFS как системы
Правила задаются с помощью специального вида .NET сборок, реализующих определенные интерфейсы. Несколько правил поставляется вместе с самим TFS, огромное количество правил реализовано сообществом разработчиков и находится в открытом доступе. Если же найти идеально подходящее правило так и не удалось, в
В стандартную поставку TFS входят следующие правила:
В пакете
Среди правил, доступных в открытом доступе можно выделить:
Выбрать список правил, применяемых для командного проекта можно с помощью окна настройки системы
(рис 14.6) Редактирование правил вноса измененийСледует заметить, что достаточно часто при разработке случаются ситуации, когда изменение необходимо срочно внести и на удовлетворение всех правил времени нет, либо конкретное правило не может быть выполнено по объективным причинам. В этом случае разработчик имеет право отменить правила для своего пакета изменений, написав при этом комментарий с объяснением причин отмены (рис 14.7).
(рис 14.7) Диалог Policy Failure), позволяющий выбрать путь, куда следует скопировать (ответвить) выбранные файлы. После выполнения этой команды в системе
(рис 14.8) Создание новой ветвиЗаметим, что после создания ветви она не попадает автоматически на сервер. Чтобы ветвь попала на сервер и стала доступна всем, необходимо выполнить операцию внесения изменений (рис 14.9).
(рис 14.9) Внесение изменений ответвленияГораздо более сложной, как правило, является операция переноса изменений из ветви в ветвь. Для выполнение этой операции (команда Merge ) используется специальный мастер, позволяющий разработчику задать необходимые параметры слияния за несколько шагов.
(рис 14.10) Область интеграцииНа первом шаге (рис 14.10) разработчик задает откуда ( source branch ) и куда ( target branch ), а также изменения из какой области он хочет перенести (все вплоть до определенной версии, или только выбранные пакеты изменений).
(рис 14.11) Версия для интеграцииВ случае, если разработчик выбрал перенос всех изменений, ему предлагается выбрать версию исходной ветви вплоть до которой изменения нужно перенести (рис 14.11). Разработчик может выбрать полный перенос, перенос до определенной даты, все предшествующие определенному пакету изменения, либо интеграцию до тех версий, которые находятся в текущем локальном
(рис 14.12) Выбор пакетов для интеграцииВ случае, если разработчик выбрал интеграцию по пакетам изменений, ему предоставляется выбор среди не интегрированных пакетов (рис 14.12), и он может выбрать один или несколько из них.
Так же как и при создании новых ветвей, при выполнении интеграции необходимо в явном виде внести пакет изменений, применив к нему все настроенные правила и ассоциировав с соответствующим элементом работы.
(рис 14.13) Список конфликтовДостаточно часто при интеграции может возникнуть ситуация конфликта изменений, когда интегрируемый файл поменялся в обоих ветвях независимо друг от друга. В этом случае
Разработчик может выбрать автоматический способ разрешения, который сработает только для тех файлов, в которых были изменены разные части. В случае, если автоматическое разрешение невозможно, система откроет диалог ручного разрешения – см. рис 14.14.
(рис 14.14) Разрешение конфликтаДля разрешения конкретного конфликта разработчик может выбрать несколько способов: автоматически объединить изменения (если возможно), принять изменения из исходной ветки, сохранить изменения целевой ветки или вручную разрешить все внутренние конфликты в специальном инструменте рис 14.15.
(рис 14.15) Разрешение внутренних конфликтовСледует оговорится, что данный инструмент имеет достаточно ограниченную функциональность, поэтому некоторые разработчики предпочитаются использовать аналогичные инструменты других производителей.
Сохранение без внесения. Полезной возможностью системы
Эта функциональность позволяет защитить важный пакет изменения от потери, если разработчик вынужден временно приостановить работу (например, чтобы поспать). Находясь на сервере эти изменения подпадают под политику создания резервных копий базы данных и, следовательно,
Еще одним способом применение данной возможности является перенос изменений между разными машинами, в том случае, если разработчик использует несколько машин (например, рабочую или домашнюю). Сохраненные на сервере изменения разработчик сможет получить на другой машине в том же виде, чтобы продолжить работу, где бы он ни находился.
(рис 14.16) Сохранение без внесенияДля сохранения изменений служит команда , аналогичный диалогу внесения изменений за исключением поля для введения имени сохраненного пакета в верхней части и двух следующих дополнительных опций в нижней части.
(рис 14.17) Список текущих измененийДля того, чтобы восстановить сохраненные изменения необходимо воспользоваться командой ). Эта команда открывает диалог восстановления изменений (рис 14.18), позволяющий выбрать один из сохраненных пакетов для восстановления. Из этого же диалога пакеты можно удалить, если они потеряют актуальность.
(рис 14.18) Диалог восстановления измененийОбщее. Одним из существенных преимуществ TFS по сравнению с другими системами управления
Очевидным преимуществом TFS здесь является то, что описание простого процесса сборки создается меньше чем за минуту, а описание более сложных создаются не сложнее, чем с помощью стандартного MsBuild.
).
(рис 14.19) Общие настройки описания сборкиНа первой закладке ( General ) находится общая информация – название и описание назначения этого сценария сборки.
(рис 14.20) Настройка рабочего пространстваНа второй закладке ( – описывается то, какие исходные тексты необходимо взять из системы
(рис 14.21) Выбор или создание MsBuild-проектаНаиболее интересной является третья закладка ), где разработчик может выбрать один из существующих MsBuild-сценариев сборки или создать новый.
(рис 14.22) Правила сохраненияВ TFS 2008, в связи с реализацией функциональности по непрерывной интеграции, возникла проблема большого числа описаний сборок и результатов, сохраненных в системе и на диске. Для устранения проблемы был реализован механизм автоматической очистки, получившей название Retention
Полезной функцией является то, что политику уничтожения результатов можно отключить для конкретной сборки используя опцию Retain Indefinitely. Результаты, помеченные этой опцией, сохраняются в системе навсегда (или пока опция не будет снята).
(рис 14.23) Выбор агентаНа закладке ) мы задаем свойства окружения, которое будет использовано для автоматического запуска процесса сборки. Главным здесь является сборочный агент – процесс, в рамках которого будет выполняться процесс сборки.
Кроме того, именно на этой закладке можно задать сетевую разделяемую папку, в которой будут храниться результаты процесса сборки. При выборе папки нужно убедиться, что сборочный агент имеет к ней доступ на запись.
(рис 14.24) Задание триггераНа заключительном этапе настройки процесса сборки (см. рис 14.24) мы задаем условие, при выполнении которого процесс сборки, определенный данным описанием, должен выполняться. Это условие может быть одним из следующих:
– 14.27).
(рис 14.25) Выбор решенийНа первом шаге (рис 14.25) мы выбираем в системе
(рис 14.26) Выбор конфигурацийНа втором шаге (см. рис 14.26) мы выбираем те конфигурации в этих решениях, которые нужно собирать.
(рис 14.27) Выбор тестов и правил анализаИ, наконец, на третьем шаге (рис 14.27) мы выбираем те тесты, которые мы хотим запустить и отмечаем, хотим ли мы проводить статический анализ кода. В отличии от TFS 2005, где при выборе тестов можно было использовать только заранее подготовленные тестовые пакеты, в TFS 2008 появилась такая востребованная возможность как автоматическое подключение пакетов тестов по метке имени (обычно сборки начинающиеся или заканчивающиеся на Test). Эта возможность позволяет без дополнительных затрат включить выполнение модульных тестов в автоматическую сборку.
Создание сборочного агента. Появление сборочных агентов в TFS 2008 позволило значительно расширить возможности конфигурации автоматического выполнения процесса сборки. Сборочный агент – это процесс, запущенный на некоторой выделенной машине, в рамках которого и происходит автоматическая сборка. На самом деле, сборочные агенты выполняются процессом TFSBuild, запущенным в виде сервера или
Одна машина может размещать у себя несколько процессов TFSBuild, каждый из которых доступен как Web-сервис на определенном порту. При этом каждый процесс TFSBuild может содержать несколько сборочных агентов, которые отличаются именами и рабочими папками, в которых они выполняют сборку.
Несмотря на сложность описанного процесса, настройка его достаточно проста и производится, в основном, с помощью окна свойств агента (см. рис 14.28).
(рис 14.28) Свойства сборочного агента.
(рис 14.29) Запуск новой сборкиПри запуске новой сборки пользователь может выбрать описание сборки, сборочного агента (по умолчанию используется агент, заданный в описании), папку для хранения результатов (так же берется по умолчанию из описания), приоритет и позицию в очереди (каждый сборочный агент может выполнять не более одной сборки за раз), а также дополнительные параметры командной строки для MsBuild. Как правило, в приведенном окне можно использовать все настройки по умолчанию, менять которые приходится только в особых случаях.
(рис 14.30) Список описаний сборокПосле того, как сборка помещена в очередь, она отображается в списке сборок (рис 14.30), откуда можно перейти к окну с детальной информацией о сборке (рис 14.31). В этом окне отображается ход сборки, или её результаты, если она завершена.
Пример на рис 14.31 наглядно демонстрирует средства
(рис 14.31) Результаты сборкиУправление процессом сборки. Все продемонстрированные нами средства визуального описания сборок доступны не только при создании такого описания, но и для любого из существующих описаний сборок (команда Edit Build Definition ). Единственным исключением является файл MsBuild, который, будучи однажды сгенерирован с помощью мастера, далее поддерживается вручную.
Этот файл можно найти в системе
(рис 14.32) Файл определения проектаЗаметим, что для большинства простых проектов обычно хватает настроек, доступных через визуальные редакторы, и изменять эти файлы приходится относительно редко.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.