SlideShare a Scribd company logo
1 of 22
Непрерывная интеграция
Непрерывная интеграция

Непрерывная интеграция (англ. Continuous
Integration) — это практика разработки программного
обеспечения, которая заключается в выполнении частых
автоматизированных сборок проекта для скорейшего
выявления и решения интеграционных проблем.

                                             -- Wikipedia
Постулаты
•   Система контроля версий

•   Юнит-тесты

•   Автоматическая сборка

•   Автоматическая валидация кода

•   Автоматический деплой

•   Документация (RDD)
Система контроля версий

• Ведение журнала изменений
• “Машина времени”
• Авторство (по строкам, по файлам)
• Распределенность!
• Моментальное создание веток
• Хуки на пост- и предобработку
Юнит-тесты
 Юнит-тесты позволяют проверить отдельные части
  приложения (модули) на работоспособность, что
позволяет исключить регрессии в уже существующем
коде и помогает обозначить место в модуле, где была
                допущена ошибка.

Приложение должно составляться из модулей, которые
собой представляют библиотеки, выполняющие строго
            узконаправленные функции.
     (Бредовый пример с Memcached, Брэдом Фитцпатриком и Козлом Фрэнком)
Покрытие кода тестами

• Писать тесты -- задача разработчика
• Покрывать тестами нужно все, что
  можно покрыть
• Если даже кажется, что модуль
  примитивен, занимает всего две строчки,
  тесты все равно нужно написать
Тестовый фреймворк

                 PHPUnit:
https://github.com/sebastianbergmann/phpunit
  (Поддержка самых свежих версий PHP)
Автоматическая сборка

•   Hudson (Java)

•   Jenkins (Java)

•   BuildBot (Python)

•   Travis CI (Ruby)

•   TeamCity (Java)
Автоматическая сборка

•   Hudson (Java)

•   Jenkins (Java)

•   BuildBot (Python)

•   Travis CI (Ruby)

•   TeamCity (Java)
TeamCity
Лицензии на TeamCity

• Professional (бесплатная,
  20 билд-конфигураций, 3 билд-агента)
• Enterprise
• EAP
Что такое “Билд”
В системах интеграции под словом “билд” (сборка)
 подразумевается успешное прохождение шагов,
         заданных в билд-конфигурации.

Триггером билда является появление нового кода в
                 репозитории.
Наша билд-конфигурация
          1. Получение исходных кодов из
          репозитория
          2. Запуск валидатора
          3. Прогон юнит-тестов
          4. Получение деплой-инструкций
          5. Деплой


NB: Если хоть какой-то шаг завершается ошибкой, то билд признается неуспешным
Валидатор

                 PHPLinter:
    https://github.com/robotis/PHPLinter
(Проверка качества исходных кодов модулей)
Валидация
  Валидация осуществляется согласно описанным
правилам, в нашем случае мы ориентируемся на PEAR
   Coding Standards, с небольшими изменениями.

Помимо исходного кода проверяется правильность
     расположения и именования файлов,
          согласно стандарту PSR-0.
Система деплоя


           Fabric (Python):
http://docs.fabfile.org/en/1.4.3/index.html
Нотификации
• Электронные письма
• Jabber / XMPP
В сообщении имеется ссылка на полный
отчет о прохождении билда.
Билд-агенты
Включают в себя:

• Git
• PHP
• MySQL
• Memcached
• MongoDB
• Fabric
Деплой
 После успешного билда, Fabric переносит модули на
боевой сервер, где срабатывает отдельное приложение-
          сборщик пакетов в формат PHAR.

    Это усиливает защиту от несанкционированных
  изменений исходных кодов модулей, а обертка для
  управления модулями (mpr) позволяет приложению
 автоматически скачивать нужные модули, а так же его
         зависимости из нашего репозитория.
Документация



RDD
Readme Driven Development
Вопросы?
(c) 2012 InfoStars, LLC
  +7 (495) 778-13-17
otyutskiy@infostars.ru
ostrovskiy@infostars.ru

More Related Content

What's hot

Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?DotNetConf
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовCOMAQA.BY
 
Automated tests ci
Automated tests ci Automated tests ci
Automated tests ci COMAQA.BY
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментовVitalii Morvaniuk
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Technopark
 
Игорь Кашкута
Игорь КашкутаИгорь Кашкута
Игорь КашкутаCodeFest
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...Sergey Ponomarev
 
Тестирование ПО, основанного на сторонних компонентах, на примере дистрибут...
Тестирование ПО, основанного на  сторонних компонентах, на примере  дистрибут...Тестирование ПО, основанного на  сторонних компонентах, на примере  дистрибут...
Тестирование ПО, основанного на сторонних компонентах, на примере дистрибут...ru_Parallels
 
системы сборок проектов
системы сборок проектовсистемы сборок проектов
системы сборок проектовRomero78
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Yulia Tsisyk
 
Вадим Козлов, Илья Казначеев - Selenium через SAP
Вадим Козлов, Илья Казначеев - Selenium через SAPВадим Козлов, Илья Казначеев - Selenium через SAP
Вадим Козлов, Илья Казначеев - Selenium через SAPIlya Kaznacheev
 
Денис Трифонов
Денис ТрифоновДенис Трифонов
Денис ТрифоновCodeFest
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsSQALab
 
Базовые принципы работы с SVN.
Базовые принципы работы с SVN.Базовые принципы работы с SVN.
Базовые принципы работы с SVN.DressTester
 
Тестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях ИнтернетаТестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях ИнтернетаSQALab
 
Комфортная разработка мобильных проектов
Комфортная разработка мобильных проектовКомфортная разработка мобильных проектов
Комфортная разработка мобильных проектовCodeFest
 

What's hot (20)

Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
C#5 What's new?
C#5 What's new?C#5 What's new?
C#5 What's new?
 
Automated tests ci
Automated tests ci Automated tests ci
Automated tests ci
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментов
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5
 
Игорь Кашкута
Игорь КашкутаИгорь Кашкута
Игорь Кашкута
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...серёжа пономарёв @ Kuchyn.com.ua junior java developer  программируем по-взро...
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
 
Тестирование ПО, основанного на сторонних компонентах, на примере дистрибут...
Тестирование ПО, основанного на  сторонних компонентах, на примере  дистрибут...Тестирование ПО, основанного на  сторонних компонентах, на примере  дистрибут...
Тестирование ПО, основанного на сторонних компонентах, на примере дистрибут...
 
системы сборок проектов
системы сборок проектовсистемы сборок проектов
системы сборок проектов
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
Вадим Козлов, Илья Казначеев - Selenium через SAP
Вадим Козлов, Илья Казначеев - Selenium через SAPВадим Козлов, Илья Казначеев - Selenium через SAP
Вадим Козлов, Илья Казначеев - Selenium через SAP
 
Telegram Bot
Telegram BotTelegram Bot
Telegram Bot
 
Денис Трифонов
Денис ТрифоновДенис Трифонов
Денис Трифонов
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под Windows
 
Базовые принципы работы с SVN.
Базовые принципы работы с SVN.Базовые принципы работы с SVN.
Базовые принципы работы с SVN.
 
Тестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях ИнтернетаТестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях Интернета
 
Комфортная разработка мобильных проектов
Комфортная разработка мобильных проектовКомфортная разработка мобильных проектов
Комфортная разработка мобильных проектов
 

Similar to Continuous integration

метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кодаSergii Shmarkatiuk
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораSQALab
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовCOMAQA.BY
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовSQALab
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Vladimir Bakhov
 
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Проблемы и пути их решения при командной разработке проектов
Проблемы и пути их решения при командной разработке проектовПроблемы и пути их решения при командной разработке проектов
Проблемы и пути их решения при командной разработке проектовАгентство AlterEGO
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...DevDay
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в ЯндексеAndrey Kazarinov
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Ontico
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинSergey Xek
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nixAlexander Gerasiov
 
Технологии разработки ПО
Технологии разработки ПОТехнологии разработки ПО
Технологии разработки ПОAnton Konushin
 

Similar to Continuous integration (20)

метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
WebAssembly
WebAssemblyWebAssembly
WebAssembly
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)
 
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
Genome
GenomeGenome
Genome
 
Проблемы и пути их решения при командной разработке проектов
Проблемы и пути их решения при командной разработке проектовПроблемы и пути их решения при командной разработке проектов
Проблемы и пути их решения при командной разработке проектов
 
презентация.1
презентация.1презентация.1
презентация.1
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в Яндексе
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nix
 
Технологии разработки ПО
Технологии разработки ПОТехнологии разработки ПО
Технологии разработки ПО
 

Continuous integration

  • 2. Непрерывная интеграция Непрерывная интеграция (англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. -- Wikipedia
  • 3. Постулаты • Система контроля версий • Юнит-тесты • Автоматическая сборка • Автоматическая валидация кода • Автоматический деплой • Документация (RDD)
  • 4. Система контроля версий • Ведение журнала изменений • “Машина времени” • Авторство (по строкам, по файлам) • Распределенность! • Моментальное создание веток • Хуки на пост- и предобработку
  • 5. Юнит-тесты Юнит-тесты позволяют проверить отдельные части приложения (модули) на работоспособность, что позволяет исключить регрессии в уже существующем коде и помогает обозначить место в модуле, где была допущена ошибка. Приложение должно составляться из модулей, которые собой представляют библиотеки, выполняющие строго узконаправленные функции. (Бредовый пример с Memcached, Брэдом Фитцпатриком и Козлом Фрэнком)
  • 6. Покрытие кода тестами • Писать тесты -- задача разработчика • Покрывать тестами нужно все, что можно покрыть • Если даже кажется, что модуль примитивен, занимает всего две строчки, тесты все равно нужно написать
  • 7. Тестовый фреймворк PHPUnit: https://github.com/sebastianbergmann/phpunit (Поддержка самых свежих версий PHP)
  • 8. Автоматическая сборка • Hudson (Java) • Jenkins (Java) • BuildBot (Python) • Travis CI (Ruby) • TeamCity (Java)
  • 9. Автоматическая сборка • Hudson (Java) • Jenkins (Java) • BuildBot (Python) • Travis CI (Ruby) • TeamCity (Java)
  • 11. Лицензии на TeamCity • Professional (бесплатная, 20 билд-конфигураций, 3 билд-агента) • Enterprise • EAP
  • 12. Что такое “Билд” В системах интеграции под словом “билд” (сборка) подразумевается успешное прохождение шагов, заданных в билд-конфигурации. Триггером билда является появление нового кода в репозитории.
  • 13. Наша билд-конфигурация 1. Получение исходных кодов из репозитория 2. Запуск валидатора 3. Прогон юнит-тестов 4. Получение деплой-инструкций 5. Деплой NB: Если хоть какой-то шаг завершается ошибкой, то билд признается неуспешным
  • 14. Валидатор PHPLinter: https://github.com/robotis/PHPLinter (Проверка качества исходных кодов модулей)
  • 15. Валидация Валидация осуществляется согласно описанным правилам, в нашем случае мы ориентируемся на PEAR Coding Standards, с небольшими изменениями. Помимо исходного кода проверяется правильность расположения и именования файлов, согласно стандарту PSR-0.
  • 16. Система деплоя Fabric (Python): http://docs.fabfile.org/en/1.4.3/index.html
  • 17. Нотификации • Электронные письма • Jabber / XMPP В сообщении имеется ссылка на полный отчет о прохождении билда.
  • 18. Билд-агенты Включают в себя: • Git • PHP • MySQL • Memcached • MongoDB • Fabric
  • 19. Деплой После успешного билда, Fabric переносит модули на боевой сервер, где срабатывает отдельное приложение- сборщик пакетов в формат PHAR. Это усиливает защиту от несанкционированных изменений исходных кодов модулей, а обертка для управления модулями (mpr) позволяет приложению автоматически скачивать нужные модули, а так же его зависимости из нашего репозитория.
  • 22. (c) 2012 InfoStars, LLC +7 (495) 778-13-17 otyutskiy@infostars.ru ostrovskiy@infostars.ru