Upload
pavel-tsukanov
View
1.780
Download
7
Embed Size (px)
DESCRIPTION
то такое "Непрерывная Интеграция", зачем она нужна и с чем ее едят? Правда ли, что она нужна только для тестировщиков? На все эти вопросы мы постараемся найти ответы в ходе выступления Щербакова Ильи на нашей следующей юзер-группе.
Citation preview
TULADEV.NET
Continuous Integration для чайников вместе с TeamCity
Илья Щербаков
Codemasters International
QA Engineer
TULADEV.NET
Жизненный цикл программного обеспечения1. Возникновение и исследование идеи2. Анализ требований и проектирование3. Программирование4. Тестирование и отладка5. Ввод в эксплуатацию (начало коммерческого
использования), маркетинговое продвижение, SEO оптимизация
6. Эксплуатация, сопровождение, развитие7. Завершение эксплуатации, прекращение
поддержки программного продукта
TULADEV.NET
Модели жизненного цикла программного обеспечения
• Водопадная модельПредложена Уинстом Ройсом (1970). Включает формирование требований, проектирование, реализацию, тестирование, внедрение, эксплуатацию и сопровождение
• Итерационая модель (инкрементальная)Предложена Т. Гилбом в 1970-е года. Предполагает разбиение жизненного цикла проекта на итерации.
• Спиральная модельПредложена Барри Боэмом в середине 1980х годов. Программное обеспечение создается в несколько итераций (витков спирали) методом прототипирования. Каждая итерация преследует цель создания фрагмента ПО. Особое внимание уделяется рискам на очередную итерацию.
TULADEV.NET
Непрерывная Интеграция
• Что такое CI?
• Что включает в себя Организация CI? Получение исходников Сборка Выполнение тестов Развертывание Отчеты
• Кто заинтересован в процессе CI?
TULADEV.NET
Преимущества и недостатки Непрерывной Интеграции
+ Проблемы интеграции выявляются и исправляются быстро, что оказывается дешевле;+ Немедленный прогон модульных тестов для свежих изменений;+ Постоянное наличие текущей стабильной версии вместе с продуктами+ Немедленный эффект от неполного или неработающего кода приучает разработчиков к работе в итеративном режиме с более коротким циклом
- Поддержание среды CI- Нужда в выделенном сервере для CI- Немедленный эффект от неполного или неработающего кода отучает разработчиков от выполнения периодических резервных включений кода в репозиторий
TULADEV.NET
Средства обеспечения Непрерывной Интеграции
TeamCity
Hudson
Bamboo
CruiseControl
BuildBot
… и другие...
TULADEV.NET
Что нужно, чтобы пользоваться TeamCity?
- Желание - Репозиторий- Скачать и установить компоненты TeamCity- Создать сценарии билдов
TULADEV.NET
Какие плюшки дает TeamCity? Заменит ли он сало?
+ Pro-версия на 20 конфигураций и 3 агента+ Поддержка платформ Java, .NET, Ruby+ Наличие плагинов для многих IDE (Eclipse, VS, Redmine и др.)+ Расширяемость сервера и агентов плагинами Java+ Возможность протестировать код перед коммитом (Personal Build)+ Параллельность билдов+ Интеграция с системами оценки кода (покрытие, инспецция, дублицирование)+ Интеграция с багтреккерами+ Tray-Notifier
TULADEV.NET
Инфраструктура CI на базе TeamCity
TULADEV.NET
Интерфейс TeamCity 7.1
TULADEV.NET
Трансформация конфигурационных файлов
Файл Web.QA.config
TULADEV.NET
Параметризация билдов
Пример использования:MSBuild.exe %Checkoutdirprefix%%ProjectConfiguration%\Site\TulaDevPresentation\TulaDevPresentation.sln /p:Configuration=%ProjectConfiguration%;DeployOnBuild=true;DeployTarget=Package;_PackageTempDir=%Deploydirprefix%%ProjectConfiguration%
TULADEV.NET
Компиляция приложения через MSBuild.exe
(см. листинг на след. слайде)
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%
TULADEV.NET
Развертывание проекта на IIS(см. листинг на след. слайде)
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"
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
TULADEV.NET
Демонстрация работы TeamCity
TULADEV.NET
Персональный билд (Personal Build)
TULADEV.NET
Демонстрация работы Персонального Билда (Personal Build Demo)
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