21
TULADEV.NET ontinuous Integration для чайников вместе с TeamCity [email protected] Илья Щербаков Codemasters International QA Engineer

CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Continuous Integration для чайников вместе с TeamCity

[email protected]

Илья Щербаков

Codemasters International

QA Engineer

Page 2: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Жизненный цикл программного обеспечения1. Возникновение и исследование идеи2. Анализ требований и проектирование3. Программирование4. Тестирование и отладка5. Ввод в эксплуатацию (начало коммерческого

использования), маркетинговое продвижение, SEO оптимизация

6. Эксплуатация, сопровождение, развитие7. Завершение эксплуатации, прекращение

поддержки программного продукта

Page 3: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Модели жизненного цикла программного обеспечения

• Водопадная модельПредложена Уинстом Ройсом (1970). Включает формирование требований, проектирование, реализацию, тестирование, внедрение, эксплуатацию и сопровождение

• Итерационая модель (инкрементальная)Предложена Т. Гилбом в 1970-е года. Предполагает разбиение жизненного цикла проекта на итерации.

• Спиральная модельПредложена Барри Боэмом в середине 1980х годов. Программное обеспечение создается в несколько итераций (витков спирали) методом прототипирования. Каждая итерация преследует цель создания фрагмента ПО. Особое внимание уделяется рискам на очередную итерацию.

Page 4: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

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

• Что такое CI?

• Что включает в себя Организация CI? Получение исходников Сборка Выполнение тестов Развертывание Отчеты

• Кто заинтересован в процессе CI?

Page 5: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Преимущества и недостатки Непрерывной Интеграции

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

- Поддержание среды CI- Нужда в выделенном сервере для CI- Немедленный эффект от неполного или неработающего кода отучает разработчиков от выполнения периодических резервных включений кода в репозиторий

Page 6: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Средства обеспечения Непрерывной Интеграции

TeamCity

Hudson

Bamboo

CruiseControl

BuildBot

… и другие...

Page 7: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Что нужно, чтобы пользоваться TeamCity?

- Желание - Репозиторий- Скачать и установить компоненты TeamCity- Создать сценарии билдов

Page 8: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Какие плюшки дает TeamCity? Заменит ли он сало?

+ Pro-версия на 20 конфигураций и 3 агента+ Поддержка платформ Java, .NET, Ruby+ Наличие плагинов для многих IDE (Eclipse, VS, Redmine и др.)+ Расширяемость сервера и агентов плагинами Java+ Возможность протестировать код перед коммитом (Personal Build)+ Параллельность билдов+ Интеграция с системами оценки кода (покрытие, инспецция, дублицирование)+ Интеграция с багтреккерами+ Tray-Notifier

Page 9: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Инфраструктура CI на базе TeamCity

Page 10: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Интерфейс TeamCity 7.1

Page 11: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Трансформация конфигурационных файлов

Файл Web.QA.config

Page 12: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Параметризация билдов

Пример использования:MSBuild.exe %Checkoutdirprefix%%ProjectConfiguration%\Site\TulaDevPresentation\TulaDevPresentation.sln /p:Configuration=%ProjectConfiguration%;DeployOnBuild=true;DeployTarget=Package;_PackageTempDir=%Deploydirprefix%%ProjectConfiguration%

Page 13: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Компиляция приложения через MSBuild.exe

(см. листинг на след. слайде)

Page 14: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Компиляция приложения через MSBuild.exe

(Листинг)C:cd C:\Windows\Microsoft.NET\Framework\v4.0.30319MSBuild.exe %Checkoutdirprefix%%ProjectConfiguration%\Site\TulaDevPresentation\TulaDevPresentation.sln /p:Configuration=%ProjectConfiguration%;DeployOnBuild=true;DeployTarget=Package;_PackageTempDir=%Deploydirprefix%%ProjectConfiguration%

Page 15: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Развертывание проекта на IIS(см. листинг на след. слайде)

Page 16: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Развертывание проекта на IIS(Листинг)

c:cd "c:\Program Files (x86)\IIS\Microsoft Web Deploy V3"msdeploy.exe -verb:sync -source:iisApp="%Deploydirprefix%%ProjectConfiguration%" -dest:package=%Deploydirprefix%%ProjectConfiguration%\tuladev_site.zipmsdeploy.exe -verb:sync -source:package="%Deploydirprefix%%ProjectConfiguration%\tuladev_site.zip" -dest:iisApp="TuladevPresentationQA"

Page 17: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Раз, два, три и в Продакшен?!Билдим проект в отдельную папку: C:cd C:\Windows\Microsoft.NET\Framework\v4.0.30319MSBuild.exe b:\TuladevCheckoutStaging\Site\TulaDevPresentation\TulaDevPresentation.sln /p:Configuration=Production;DeployOnBuild=true;DeployTarget=Package;_PackageTempDir=b:\tuladevdeployProduction

Синхронизируем Production cо Staging-окружением:"c:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:contentpath="c:\inetpub\wwwroot\tuladevpresentationStaging" -dest:contentpath="c:\inetpub\wwwroot\tuladevpresentationProduction",computerName=ISCherbakovWS.Codemasters.Local

Копируем Web.Configcopy "b:\tuladevdeployProduction\Web.config" "c:\inetpub\wwwroot\tuladevpresentationProduction" /V /Y

Page 18: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Демонстрация работы TeamCity

Page 19: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Персональный билд (Personal Build)

Page 20: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Демонстрация работы Персонального Билда (Personal Build Demo)

Page 21: CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY

TULADEV.NET

Спасибо за внимание!

Ссылки и полезные материалы:http://www.martinfowler.com/articles/continuousIntegration.htmlhttp://confluence.jetbrains.comhttp://www.iis.net/http://blog.winhost.com/using-msdeploy-to-publish-your-site/http://matt-roberts.me/dev/2012/04/04/automated-web-app-deployment-with-teamcity-and-msdeploy/http://msdn.microsoft.com/ru-ru/library/dd394698(v=vs.100).aspx