Непрерывная интеграция: Внедрение, настройка, использование

Анонс

Практика непрерывной интеграции известна ужа давно, о ней писал Мартин Фаулер [1] еще2006 году, а Джоэл Спольски даже в 2000 году [4], хотя в тот момент он и не употреблял даже этого термина. Основа непрерывной интеграции заключается в выполнении автоматизированных сборок проекта, запуска тестов, возможности развертывания последней версии приложения и т.п. для более быстрого выявления и решения возникающих интеграционных проблем. Удивительно, что в нынешнее время встречается еще достаточное количество компаний, которые не ввели у себя непрерывную интеграцию, и более того удивительно, что даже некоторые из этих компаний негативно относятся к внедрению непрерывной интеграции, аргументируя это пустой тратой времени.К счастью, разработчики, которые проходили через это, делились советами и рекомендациями относительно того, как нужно внедрять непрерывную интеграцию у себя в компании.

В своем докладе я хочу рассмотреть основные вопросы, с которыми предстоит сталкиваться человеку, который хочет внедрить непрерывную интеграцию у себя в проекте. Поговорить об антипаттернах непрерывной интеграции. Основываться мой доклад будет на тестовом проекте ASP.NETSilverlight, автоматизированная сборка которого будет происходить на достаточно распространенных утилитах: билд сервере CruiseControl.NET, билд утилите NAnt, средстве для юнит тестирования nUnit. И хотя в докладе будет несколько советов, относящихся именно к разработке с использованием Silverlight, все эти утилиты имеют аналоги для многих других языков и платформ программирования, потому доклад не будет заточен только под .NETтехнологию.

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

План доклада:

  1. Описание понятия непрерывной интеграции.
  2. Принципы введения непрерывной интеграции, что для этого нужно. Не все команды бывают подготовлены к тому, чтобы внедрять у себя непрерывную интеграцию, ссылаясь на затраты в дополнительных машинах, времени на сопровождения и т.п.
  3. Основные шаги по внедрению непрерывной интеграции. Что делать, с чего начинать, что необходимо? На чем завязана эта процедура? Как выбрать лучшие инструменты?
  4. Настройка билд сервера, рекомендации. Сколько времени должен занимать билд? Как можно уменьшить время выполнения билда? Какие еще билды, помимо основного, можно делать? Какие способы обратной связи бывают?
    1. Скорость выполнение автоматизированной сборки.
    2. Разбиение автоматизированных процессов, увеличивающих время выполнения сборки.
    3. Обратная связь.
  5. Непрерывная интеграция баз данных. Хранение исходного кода баз данных, подготовка базы данных для тестов, автоматическое развертывание последней версии базы данных для тестировщиков, а так же автоматическое обновление базы данных при развертывании приложения – это отдельные сложные вопросы.
  6. Локальная автоматизированная сборка. Иногда хочется настроить локально рабочую машину так, чтобы была возможность локально прогонять все этапы (или частично, самые важные) непрерывной интеграции, чтобы быть убежденным в том, что будущий чекин не сломает билд.
  7. Множественные ветвления в репозитории, настройка автоматизированных сборок. Настройка билд сервера – это тоже кодирование, только декларативное. В случае сильных ветвлений в проекте, файл конфигурации билд сервера может очень сильно усложняться, но на это тоже существуют решения.
  8. Дополнительные процессы, которые можно и нужно автоматизировать при помощи билд сервера. При помощи билд сервера можно и нужно автоматизировать не только сам билд, а любые процессы, которые могут повторяться.
    1. Развертывание. При помощи билд сервера так же можно автоматизировать процессы для развертывания приложения для тестировщиков, так же развертывания инсталяции или подготовки инстяляционных пакетов.
    2. Анализ кода. Улучшаем качество кода при помощи автоматических проверок и анализа кода.

Литература

  1. Martin Fowler - Continuous Integration http://martinfowler.com/articles/continuousIntegration.html
  2. Paul Duvall - Automation for the people: Continuous Integration anti-patterns http://www.ibm.com/developerworks/java/library/j-ap11297/
  3. Paul M. Duvall, Steve Matyas, Andrew Glover- Continuous Integration: Improving Software Quality and Reducing Risk. Addison-Wesley Professional, 2007.
  4. Joel Spolsky - The Joel Test: 12 Steps to Better Code. http://www.joelonsoftware.com/articles/fog0000000043.html

Комментарии

{{comment.AuthorInfo}}
{{ comment.DateCreated | date: 'dd.MM.yyyy' }}

Партнеры конференции

Заметили ошибку?