Спонсор: Microsoft
Опубликован: 25.03.2010 | Доступ: свободный | Студентов: 805 / 25 | Оценка: 4.43 / 3.71 | Длительность: 10:46:00
Лекция 8:

Настройка непрерывной интеграции

< Лекция 7 || Лекция 8 || Лекция 9 >
Аннотация: В этой лекции: введение в непрерывную интеграцию; настройка непрерывной интеграции в Microsoft® Visual Studio® Team System Team Build; оптимизация непрерывной интеграции.

Обзор

В этой лекции рассказывается, как настраивать непрерывную интеграцию при помощи Team Build и Microsoft Visual Studio Team Foundation Server (TFS) . Непрерывная интеграция используется для оперативного получения информации о качестве сборки немедленно после возврата исправленного кода в систему. При командной разработке оперативность очень важна, особенно если исправления объединяются с изменениями, внесенными другими разработчиками, и приводят к сбою в сборке. Непрерывная интеграция позволяет быстро исправлять код, не мешая работе других членов команды. Тем самым повышаются качество и согласованность сборки.

По умолчанию Team Foundation Server не поддерживает непрерывную интеграцию. Однако ее можно добавить при помощи расширений Microsoft.

Основные сведения о возможностях автоматизации и планового выполнения сборок приводятся в лекции 7.

Стратегии непрерывной интеграции

Непрерывная интеграция (continuous integration) - процесс создания сборок при каждом возврате кода в систему управления исходным кодом.

Перечислим различные стратегии непрерывной интеграции:

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

Сборка при каждом возврате

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

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

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

Сборка после определенного числа возвратов

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

Сборка по истечении определенного промежутка времени

Создание сборок через определенные промежутки времени после возврата - более совершенный способ. Он позволяет гарантированно получить сборку с небольшой задержкой относительно возврата. Учтите, что с каждой сборкой может быть связано разное число возвратов - от одного до нескольких. Чем больше возвратов, тем сложнее определить, который из них вызвал сбой.

Сборка по обоим условиям

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

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

Непрерывная интеграция в TFS

По умолчанию в Team Foundation Server 2005 не включено решение непрерывной интеграции, но в нем имеется среда, позволяющая реализовать такое решение самостоятельно.

Подробнее о настройке непрерывной интеграции в TFS рассказывается в разделе "Как настроить непрерывную сборку в Visual Studio Team Foundation Server ". В качестве примера там используется решение, предоставленное командой разработчиков Visual Studio Team System. Оно устанавливает веб-службу, работающую от имени учетной записи, имеющей доступ к серверу TFS. Сервер TFS способен отправлять сообщения электронной почты или вызывать веб-службу при наступлении определенного события. Предлагаемое решение непрерывной интеграции использует механизм событий для связывания веб-службы с событием CheckinEvent. В результате каждый раз, когда происходит возврат, веб-служба инициирует выполнение сборки.

Резюме

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

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

  • выполнение сборки при каждом возврате;
  • выполнение сборки после определенного числа возвратов или по истечении определенного периода времени (используется тот способ, условие которого выполнено раньше).

Дополнительные ресурсы

< Лекция 7 || Лекция 8 || Лекция 9 >
Александр Будник
Александр Будник
Израиль, Иерусалим
Pavel Pelevin
Pavel Pelevin
Украина, Одесса