SlideShare a Scribd company logo
1 of 27
Клуб разработчиков
             http://devclub.lan.iac.spb.ru




ДОКЛАДЧИК:
СМИРНОВ СЕРГЕЙ (НАЧ. СЕКТОРА, ОТДЕЛ 22)
s_smir nov@iac.spb.ru


           СПб ГУП «СПб ИАЦ», 2013




                                             1
ПЛАН


1. Введение в непрерывную интеграцию
2. Практическая задача
3. Инструменты
4. Решение
5. Резюме




                                       2
1. ВВЕДЕНИЕ В
НЕПРЕРЫВНУЮ
 ИНТЕГРАЦИЮ




                3
НЕПРЕРЫВНАЯ ИНТЕГРАЦИЯ
Кого/чего с кем/чем?
Компонентов разрабатываемого ПО между собой

Для чего?
Для контроля за работоспособностью

Когда?
При каждом изменении

При помощи чего?
Системы контроля версий
Сценария построения
Сервера непрерывной интеграции




                                              4
СХЕМА ИНТЕГРАЦИИ




                   5
РАЗРАБОТЧИКИ
 Локальная проверка изменений перед фиксацией
 Частая фиксация изменений
 Изменения мелкие и атомарные
 Информативные сообщения к каждой фиксации
  изменений




                                                 6
СИСТЕМА КОНТРОЛЯ
ВЕРСИЙ
 Хранение всех составляющих проекта:
    исходные коды приложения и базы данных
    настройки среды разработки
    документация
    тестовые данные
    конфигурации различных сред развертывания
    библиотеки, компоненты, зависимости
 Уведомление сервера CI о произведенных
  изменениях
 Резервное копирование данных




                                                 7
СЕРВЕР CI
 Сборка после каждой фиксации изменений
 Сборка по расписанию
 Каждый тип сборки в виде отдельной задачи
 Ведение журнала и истории запусков
 Запуск сборки по нажатию одной кнопки
 Уведомление разработчиков
 Хранение артефактов сборки
 Публикация отчетов




                                              8
СЦЕНАРИЙ ПОСТРОЕНИЯ
Ключевой элемент сборки
Не зависит от среды разработки (IDE)
Состоит из набора целей выполнения:
  Компиляция
  Интеграция БД
  Запуск тестов (модульных, интеграционных и
    т.д.)
  Запуска инспекций кода
  Запуск проверок следования соглашениям
  Развертывание
  Прочее
В качестве параметров получает файлы настроек




                                                 9
МЕХАНИЗМ
 ОБРАТНОЙ СВЯЗИ
 Уведомление о неудачных сборках
 Главная задача – оповестить и заставить
  отреагировать
 Оповещение виновника в неудаче
 Оповещение по e-mail
 SMS оповещение
 Световая или звуковая сигнализация




                                            10
ПРЕИМУЩЕСТВА CI

 Снижение рисков
 Уменьшение ручных операций
 Наличие развертываемого приложения в
 любое время
 Обеспечение лучшего контроля




                                         11
CI ИЗБАВЛЯЕТ ОТ:




                   12
И ЕЩЕ ОТ:




            13
ЛИТЕРАТУРА




             14
2. ПОСТАНОВКА
    ЗАДАЧИ




                15
ДАНО
 Java веб-приложение
 Библиотека модульного тестирования – Junit
 Среда разработки – NetBeans
 Инструмент сборки – Ant
 Сервер CI – Hudson
 Сервер приложений – Glassfish 3.x
 Система контроля версия – Subversion




                                               16
ТРЕБУЕТСЯ
 Разработать сценарий построения для:
    Сборки проекта
    Запуска модульных тестов
    Развертывания приложения на сервер
     приложений Glassfish
 Настроить запуск построения проекта после
  коммита




                                              17
3. ИНСТРУМЕНТЫ




                 18
ANT
 Java утилита автоматизации сборки ПО
 Процесс сборки описывается в XML-сценарии
 Сценарий состоит из отдельных целей (Targets).
 Цели содержат вызовы команд-заданий (Tasks).
 Цели могут зависеть друг от друга
 Примеры целей: clean, compile, test, deploy
 Примеры заданий: javac, move, copy, exec, zip
 Возможность разработки собственных заданий
 Наличие большого количества библиотек




                                                   19
NETBEANS
 Разработка приложения
 Проект содержит базовый ant сценарий
  построения с точками расширения:
    -pre-compile
    -post-compile
    -pre-test
    -post-test
    и т.д.
 Запуск и отладка сценария построения




                                         20
HUDSON CI
 Сервер непрерывной интеграции
 Веб-интерфейс
 Большое количество плагинов




                                  21
SUBVERSION
 Система контроля версий
 Возможность запуска скриптов в ответ на события


Пример запуска построения после коммита
/var/svn_repo/name/hooks/post-commit
#!/bin/sh
REPOS="$1"
REV="$2"
if svnlook changed --revision $REV $REPOS | egrep …
then
    wget … http://url:8080/.../job/build
fi




                                                      22
GLASSFISH
 Варианты развертывания приложения
    Через веб admin console
    Автодеплой as-install/domains/domain-name/autodeploy
    Через утилиту asadmin
 Варианты автоматического развертывания на
  удаленном сервере
    Вызов локальной утилиты asadmin на машине
     построения (asadmin enable-secure-admin)
    Загрузка war файла на удаленный сервер через scp и
     последующий запуск утилиты asadmin через sshexec
     на удаленном сервере




                                                            23
3. РЕШЕНИЕ




             24
РЕШЕНИЕ
o Инструкции и исходные коды
   o svn://devclub.lan.iac.spb.ru/materials
o Hudson
   o http://devclub.lan.iac.spb.ru:8088/hudson
o Презентация и видео
   o http://devclub.lan.iac.spb.ru/web/devclub/archive




                                                         25
4. РЕЗЮМЕ




            26
СПАСИБО ЗА
ВНИМАНИЕ!




             27

More Related Content

What's hot

Вадим Козлов, Илья Казначеев - Selenium через SAP
Вадим Козлов, Илья Казначеев - Selenium через SAPВадим Козлов, Илья Казначеев - Selenium через SAP
Вадим Козлов, Илья Казначеев - Selenium через SAPIlya Kaznacheev
 
Виктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчикаВиктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчикаPositive Hack Days
 
Инсталляторы
ИнсталляторыИнсталляторы
Инсталляторыaepetelin
 
Continous Integration
Continous IntegrationContinous Integration
Continous IntegrationGetDev.NET
 
Российская операционная система реального времени для микроконтроллеров, с по...
Российская операционная система реального времени для микроконтроллеров, с по...Российская операционная система реального времени для микроконтроллеров, с по...
Российская операционная система реального времени для микроконтроллеров, с по...CEE-SEC(R)
 
СКБ-Банк. Игорь Клопотов. "Apache ServiceMix: опыт внедрения и эксплуатации"
СКБ-Банк. Игорь Клопотов. "Apache ServiceMix: опыт внедрения и эксплуатации"СКБ-Банк. Игорь Клопотов. "Apache ServiceMix: опыт внедрения и эксплуатации"
СКБ-Банк. Игорь Клопотов. "Apache ServiceMix: опыт внедрения и эксплуатации"Expolink
 
"Electron. How the most modern framework works" Oleksii Holubiev
"Electron. How the most modern framework works" Oleksii Holubiev"Electron. How the most modern framework works" Oleksii Holubiev
"Electron. How the most modern framework works" Oleksii HolubievFwdays
 
3 zalomlenkov selenium
3 zalomlenkov   selenium3 zalomlenkov   selenium
3 zalomlenkov seleniumqasib
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013GetDev.NET
 
системы контроля версий
системы контроля версийсистемы контроля версий
системы контроля версийNicki Feathers
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрийsolit
 
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...РИФ-Воронеж
 
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...epamspb
 
Стажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверамиСтажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверами7bits
 
70 - Spring. Установка GlassFish
70 - Spring. Установка GlassFish70 - Spring. Установка GlassFish
70 - Spring. Установка GlassFishRoman Brovko
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMPavel Tsukanov
 

What's hot (20)

Вадим Козлов, Илья Казначеев - Selenium через SAP
Вадим Козлов, Илья Казначеев - Selenium через SAPВадим Козлов, Илья Казначеев - Selenium через SAP
Вадим Козлов, Илья Казначеев - Selenium через SAP
 
Виктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчикаВиктор Стрелков - Jabber как инструмент разработчика
Виктор Стрелков - Jabber как инструмент разработчика
 
Инсталляторы
ИнсталляторыИнсталляторы
Инсталляторы
 
Continous Integration
Continous IntegrationContinous Integration
Continous Integration
 
Российская операционная система реального времени для микроконтроллеров, с по...
Российская операционная система реального времени для микроконтроллеров, с по...Российская операционная система реального времени для микроконтроллеров, с по...
Российская операционная система реального времени для микроконтроллеров, с по...
 
СКБ-Банк. Игорь Клопотов. "Apache ServiceMix: опыт внедрения и эксплуатации"
СКБ-Банк. Игорь Клопотов. "Apache ServiceMix: опыт внедрения и эксплуатации"СКБ-Банк. Игорь Клопотов. "Apache ServiceMix: опыт внедрения и эксплуатации"
СКБ-Банк. Игорь Клопотов. "Apache ServiceMix: опыт внедрения и эксплуатации"
 
"Electron. How the most modern framework works" Oleksii Holubiev
"Electron. How the most modern framework works" Oleksii Holubiev"Electron. How the most modern framework works" Oleksii Holubiev
"Electron. How the most modern framework works" Oleksii Holubiev
 
3 zalomlenkov selenium
3 zalomlenkov   selenium3 zalomlenkov   selenium
3 zalomlenkov selenium
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013
 
системы контроля версий
системы контроля версийсистемы контроля версий
системы контроля версий
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
 
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
 
DVCS как конвейер
DVCS как конвейерDVCS как конвейер
DVCS как конвейер
 
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
 
Presentation_1369673299240
Presentation_1369673299240Presentation_1369673299240
Presentation_1369673299240
 
Стажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверамиСтажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверами
 
70 - Spring. Установка GlassFish
70 - Spring. Установка GlassFish70 - Spring. Установка GlassFish
70 - Spring. Установка GlassFish
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
 
алексей диплом презентация
алексей диплом презентацияалексей диплом презентация
алексей диплом презентация
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 

Similar to Непрерывная интеграция. Практическое применение

DevOps в реальном времени
DevOps в реальном времениDevOps в реальном времени
DevOps в реальном времениAndriy Samilyak
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nixAlexander Gerasiov
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Vladimir Bakhov
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...DrupalCamp MSK
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыOleg Nenashev
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Тестирование мобильных приложений
Тестирование мобильных приложенийТестирование мобильных приложений
Тестирование мобильных приложенийAlexander Khozya
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspbGonchik Tsymzhitov
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
 
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...SQALab
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Noveo
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxDotNetConf
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Yandex
 
Netbeans Desktop Applications
Netbeans Desktop ApplicationsNetbeans Desktop Applications
Netbeans Desktop Applicationsscassau
 
Flex code quality measurement tools
Flex code quality measurement toolsFlex code quality measurement tools
Flex code quality measurement toolsValery
 

Similar to Непрерывная интеграция. Практическое применение (20)

DevOps в реальном времени
DevOps в реальном времениDevOps в реальном времени
DevOps в реальном времени
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nix
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Тестирование мобильных приложений
Тестирование мобильных приложенийТестирование мобильных приложений
Тестирование мобильных приложений
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
Netbeans Desktop Applications
Netbeans Desktop ApplicationsNetbeans Desktop Applications
Netbeans Desktop Applications
 
Flex code quality measurement tools
Flex code quality measurement toolsFlex code quality measurement tools
Flex code quality measurement tools
 

More from devclub

СМЭВ СПб и веб-службы на основе SOAP
СМЭВ СПб и веб-службы на основе SOAP СМЭВ СПб и веб-службы на основе SOAP
СМЭВ СПб и веб-службы на основе SOAP devclub
 
Liferay Portal и приемы разработки
Liferay Portal и приемы разработкиLiferay Portal и приемы разработки
Liferay Portal и приемы разработкиdevclub
 
Петербургский ДЕМО Центр
Петербургский ДЕМО ЦентрПетербургский ДЕМО Центр
Петербургский ДЕМО Центрdevclub
 
Отдел инновационных и международных проектов СПб ГУП «СПб ИАЦ»
Отдел инновационных и международных проектов СПб ГУП «СПб ИАЦ»Отдел инновационных и международных проектов СПб ГУП «СПб ИАЦ»
Отдел инновационных и международных проектов СПб ГУП «СПб ИАЦ»devclub
 
Decision support systems
Decision support systemsDecision support systems
Decision support systemsdevclub
 
Гибкая разработка БД
Гибкая разработка БДГибкая разработка БД
Гибкая разработка БДdevclub
 
Портальное решение
Портальное решениеПортальное решение
Портальное решениеdevclub
 
Процесс разработки Agile & Java
Процесс разработки Agile & JavaПроцесс разработки Agile & Java
Процесс разработки Agile & Javadevclub
 

More from devclub (8)

СМЭВ СПб и веб-службы на основе SOAP
СМЭВ СПб и веб-службы на основе SOAP СМЭВ СПб и веб-службы на основе SOAP
СМЭВ СПб и веб-службы на основе SOAP
 
Liferay Portal и приемы разработки
Liferay Portal и приемы разработкиLiferay Portal и приемы разработки
Liferay Portal и приемы разработки
 
Петербургский ДЕМО Центр
Петербургский ДЕМО ЦентрПетербургский ДЕМО Центр
Петербургский ДЕМО Центр
 
Отдел инновационных и международных проектов СПб ГУП «СПб ИАЦ»
Отдел инновационных и международных проектов СПб ГУП «СПб ИАЦ»Отдел инновационных и международных проектов СПб ГУП «СПб ИАЦ»
Отдел инновационных и международных проектов СПб ГУП «СПб ИАЦ»
 
Decision support systems
Decision support systemsDecision support systems
Decision support systems
 
Гибкая разработка БД
Гибкая разработка БДГибкая разработка БД
Гибкая разработка БД
 
Портальное решение
Портальное решениеПортальное решение
Портальное решение
 
Процесс разработки Agile & Java
Процесс разработки Agile & JavaПроцесс разработки Agile & Java
Процесс разработки Agile & Java
 

Непрерывная интеграция. Практическое применение

  • 1. Клуб разработчиков http://devclub.lan.iac.spb.ru ДОКЛАДЧИК: СМИРНОВ СЕРГЕЙ (НАЧ. СЕКТОРА, ОТДЕЛ 22) s_smir nov@iac.spb.ru СПб ГУП «СПб ИАЦ», 2013 1
  • 2. ПЛАН 1. Введение в непрерывную интеграцию 2. Практическая задача 3. Инструменты 4. Решение 5. Резюме 2
  • 4. НЕПРЕРЫВНАЯ ИНТЕГРАЦИЯ Кого/чего с кем/чем? Компонентов разрабатываемого ПО между собой Для чего? Для контроля за работоспособностью Когда? При каждом изменении При помощи чего? Системы контроля версий Сценария построения Сервера непрерывной интеграции 4
  • 6. РАЗРАБОТЧИКИ  Локальная проверка изменений перед фиксацией  Частая фиксация изменений  Изменения мелкие и атомарные  Информативные сообщения к каждой фиксации изменений 6
  • 7. СИСТЕМА КОНТРОЛЯ ВЕРСИЙ  Хранение всех составляющих проекта:  исходные коды приложения и базы данных  настройки среды разработки  документация  тестовые данные  конфигурации различных сред развертывания  библиотеки, компоненты, зависимости  Уведомление сервера CI о произведенных изменениях  Резервное копирование данных 7
  • 8. СЕРВЕР CI  Сборка после каждой фиксации изменений  Сборка по расписанию  Каждый тип сборки в виде отдельной задачи  Ведение журнала и истории запусков  Запуск сборки по нажатию одной кнопки  Уведомление разработчиков  Хранение артефактов сборки  Публикация отчетов 8
  • 9. СЦЕНАРИЙ ПОСТРОЕНИЯ Ключевой элемент сборки Не зависит от среды разработки (IDE) Состоит из набора целей выполнения: Компиляция Интеграция БД Запуск тестов (модульных, интеграционных и т.д.) Запуска инспекций кода Запуск проверок следования соглашениям Развертывание Прочее В качестве параметров получает файлы настроек 9
  • 10. МЕХАНИЗМ ОБРАТНОЙ СВЯЗИ  Уведомление о неудачных сборках  Главная задача – оповестить и заставить отреагировать  Оповещение виновника в неудаче  Оповещение по e-mail  SMS оповещение  Световая или звуковая сигнализация 10
  • 11. ПРЕИМУЩЕСТВА CI  Снижение рисков  Уменьшение ручных операций  Наличие развертываемого приложения в любое время  Обеспечение лучшего контроля 11
  • 15. 2. ПОСТАНОВКА ЗАДАЧИ 15
  • 16. ДАНО  Java веб-приложение  Библиотека модульного тестирования – Junit  Среда разработки – NetBeans  Инструмент сборки – Ant  Сервер CI – Hudson  Сервер приложений – Glassfish 3.x  Система контроля версия – Subversion 16
  • 17. ТРЕБУЕТСЯ  Разработать сценарий построения для:  Сборки проекта  Запуска модульных тестов  Развертывания приложения на сервер приложений Glassfish  Настроить запуск построения проекта после коммита 17
  • 19. ANT  Java утилита автоматизации сборки ПО  Процесс сборки описывается в XML-сценарии  Сценарий состоит из отдельных целей (Targets).  Цели содержат вызовы команд-заданий (Tasks).  Цели могут зависеть друг от друга  Примеры целей: clean, compile, test, deploy  Примеры заданий: javac, move, copy, exec, zip  Возможность разработки собственных заданий  Наличие большого количества библиотек 19
  • 20. NETBEANS  Разработка приложения  Проект содержит базовый ant сценарий построения с точками расширения:  -pre-compile  -post-compile  -pre-test  -post-test  и т.д.  Запуск и отладка сценария построения 20
  • 21. HUDSON CI  Сервер непрерывной интеграции  Веб-интерфейс  Большое количество плагинов 21
  • 22. SUBVERSION  Система контроля версий  Возможность запуска скриптов в ответ на события Пример запуска построения после коммита /var/svn_repo/name/hooks/post-commit #!/bin/sh REPOS="$1" REV="$2" if svnlook changed --revision $REV $REPOS | egrep … then wget … http://url:8080/.../job/build fi 22
  • 23. GLASSFISH  Варианты развертывания приложения  Через веб admin console  Автодеплой as-install/domains/domain-name/autodeploy  Через утилиту asadmin  Варианты автоматического развертывания на удаленном сервере  Вызов локальной утилиты asadmin на машине построения (asadmin enable-secure-admin)  Загрузка war файла на удаленный сервер через scp и последующий запуск утилиты asadmin через sshexec на удаленном сервере 23
  • 25. РЕШЕНИЕ o Инструкции и исходные коды o svn://devclub.lan.iac.spb.ru/materials o Hudson o http://devclub.lan.iac.spb.ru:8088/hudson o Презентация и видео o http://devclub.lan.iac.spb.ru/web/devclub/archive 25