Анонс
Практика непрерывной интеграции известна ужа давно, о ней писал Мартин Фаулер [1] еще2006 году, а Джоэл Спольски даже в 2000 году [4], хотя в тот момент он и не употреблял даже этого термина. Основа непрерывной интеграции заключается в выполнении автоматизированных сборок проекта, запуска тестов, возможности развертывания последней версии приложения и т.п. для более быстрого выявления и решения возникающих интеграционных проблем. Удивительно, что в нынешнее время встречается еще достаточное количество компаний, которые не ввели у себя непрерывную интеграцию, и более того удивительно, что даже некоторые из этих компаний негативно относятся к внедрению непрерывной интеграции, аргументируя это пустой тратой времени.К счастью, разработчики, которые проходили через это, делились советами и рекомендациями относительно того, как нужно внедрять непрерывную интеграцию у себя в компании.
В своем докладе я хочу рассмотреть основные вопросы, с которыми предстоит сталкиваться человеку, который хочет внедрить непрерывную интеграцию у себя в проекте. Поговорить об антипаттернах непрерывной интеграции. Основываться мой доклад будет на тестовом проекте ASP.NET + Silverlight, автоматизированная сборка которого будет происходить на достаточно распространенных утилитах: билд сервере CruiseControl.NET, билд утилите NAnt, средстве для юнит тестирования nUnit. И хотя в докладе будет несколько советов, относящихся именно к разработке с использованием Silverlight, все эти утилиты имеют аналоги для многих других языков и платформ программирования, потому доклад не будет заточен только под .NETтехнологию.
За время доклада я собираюсь на виртуальной машине настроить процесс непрерывной интеграции, начиная от простой сборки и заканчивая созданием пакетов инсталляций.
План доклада:
- Описание понятия непрерывной интеграции.
- Принципы введения непрерывной интеграции, что для этого нужно. Не все команды бывают подготовлены к тому, чтобы внедрять у себя непрерывную интеграцию, ссылаясь на затраты в дополнительных машинах, времени на сопровождения и т.п.
- Основные шаги по внедрению непрерывной интеграции. Что делать, с чего начинать, что необходимо? На чем завязана эта процедура? Как выбрать лучшие инструменты?
- Настройка билд сервера, рекомендации. Сколько времени должен занимать билд? Как можно уменьшить время выполнения билда? Какие еще билды, помимо основного, можно делать? Какие способы обратной связи бывают?
- Скорость выполнение автоматизированной сборки.
- Разбиение автоматизированных процессов, увеличивающих время выполнения сборки.
- Обратная связь.
- Непрерывная интеграция баз данных. Хранение исходного кода баз данных, подготовка базы данных для тестов, автоматическое развертывание последней версии базы данных для тестировщиков, а так же автоматическое обновление базы данных при развертывании приложения – это отдельные сложные вопросы.
- Локальная автоматизированная сборка. Иногда хочется настроить локально рабочую машину так, чтобы была возможность локально прогонять все этапы (или частично, самые важные) непрерывной интеграции, чтобы быть убежденным в том, что будущий чекин не сломает билд.
- Множественные ветвления в репозитории, настройка автоматизированных сборок. Настройка билд сервера – это тоже кодирование, только декларативное. В случае сильных ветвлений в проекте, файл конфигурации билд сервера может очень сильно усложняться, но на это тоже существуют решения.
- Дополнительные процессы, которые можно и нужно автоматизировать при помощи билд сервера. При помощи билд сервера можно и нужно автоматизировать не только сам билд, а любые процессы, которые могут повторяться.
- Развертывание. При помощи билд сервера так же можно автоматизировать процессы для развертывания приложения для тестировщиков, так же развертывания инсталяции или подготовки инстяляционных пакетов.
- Анализ кода. Улучшаем качество кода при помощи автоматических проверок и анализа кода.
Литература
- Martin Fowler - Continuous Integration http://martinfowler.com/articles/continuousIntegration.html
- Paul Duvall - Automation for the people: Continuous Integration anti-patterns http://www.ibm.com/developerworks/java/library/j-ap11297/
- Paul M. Duvall, Steve Matyas, Andrew Glover- Continuous Integration: Improving Software Quality and Reducing Risk. Addison-Wesley Professional, 2007.
- Joel Spolsky - The Joel Test: 12 Steps to Better Code. http://www.joelonsoftware.com/articles/fog0000000043.html
Комментарии