Главная страница   /   22.1. Применение непрерывной интеграции (ASP.NET MVC 4 в действии

ASP.NET MVC 4 в действии

ASP.NET MVC 4 в действии

Джеффри Палермо

22.1. Применение непрерывной интеграции

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

Для достижения непрерывной интеграции Мартин Фаулер предложил набор тех инструкций, которые нужно выполнять:

  • Поддерживайте в рабочем состоянии единичный исходный репозиторий (использовать систему управления вериями)
  • Автоматизируйте построение
  • Сделайте ваше построение самотестируемым
  • Убедитесь в том, что каждый ежедневно фиксирует изменения
  • Каждая фиксация изменений должна встраивать основную ветвь в интеграционную машину
  • Сделайте построение быстрым
  • Тестируйте в аналоге производственной среды
  • Сделайте так, чтобы аналог производственной среды был исполняем для каждого
  • Убедитесь в том, что каждый может видеть, что происходит
  • Автоматизируйте развертывание

Вы можете почитать пояснения Фаулера по каждому из этих пунктов в его статье "Непрерывная интеграция" (http://mng.bz/cHVo). В данной книге мы не будем охватывать весь набор инструкций непрерывной интеграции, поскольку на эту тему была написана целая книга. Здесь приведен всего лишь обзор для того, чтобы вы могли увидеть, как автоматизированное развертывание и развертывание по кнопке могут интегрироваться в рамках процесса непрерывной интеграции.

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

  1. Выполните локальное построение.
  2. Объявите команде, что вы приступаете к интеграции (в случае крупных изменений).
  3. Снесите предыдущую версию основной ветви. Объедините любые конфликты.
  4. Выполните локальное построение.
  5. Если запуск выполнен успешно, то зафиксируйте изменения, предоставляя описательный комментарий.
  6. Подождите, пока построение на сервере выполнится успешно.
  7. Если построение не выполнилось, то удалите все и зафиксируйте.

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

  • Система управления версиями (SVN) для управления источниками
  • NAnt для автоматизации построения
  • NUnit для тестирования
  • CruiseControl.NET для сервера непрерывной интеграции

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

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