36
Витя Русакович, Минск, Front-End разработчик в GP Sowftware.travel 1987 г.в.

«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»

  • Upload
    fdconf

  • View
    4.378

  • Download
    0

Embed Size (px)

Citation preview

Витя Русакович,Минск,Front-End разработчикв GP Sowftware.travel1987 г.в.

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

Кто всё сломал?

Любите тесты?Любите писать тесты?Любите запускать тесты?Любите вручную запускать тесты?Любите часто вручную запускать тесты?Менеджер не понимает, зачем вам тесты?Всем всё равно на тесты?

Что интегрировать?Части одного приложения, которые разрабатываются в разными командами, ветки в git/hg/svn/etc.

Зачем интегрировать?

Зачем интегрировать?Все части приложения должны работать в итоговой сборке, а за время разработки проект изменился

Правила непрерывной интеграции

1. автоматическая сборка с тестами2. все комитят часто (min раз в день)3. быстрая сборка и быстрые тесты4. легко узнать статус любой сборки5. тесты используют настоящую БД

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

Bamboo, Hudson, Jenkins, Travis CI, Snap CI

Правила непрерывной интеграции

1. автоматическая сборка с тестами2. все комитят часто (min раз в день)3. быстрая сборка и быстрые тесты4. легко узнать статус любой сборки5. тесты используют настоящую БД

1. Да, все комитят часто

10 коммитов за 3 часа~ 1 коммит каждые 20 минут

2. Не, я комичу раз в неделю

Правила непрерывной интеграции

1. автоматическая сборка с тестами2. все комитят часто (min раз в день)3. быстрая сборка и быстрые тесты4. легко узнать статус любой сборки5. тесты используют настоящую БД

3. Быстрая сборка и тесты.

А почему должно быть медленно?

Что внутри приложения - код

Single Page ApplicationBack-end (api) - Java 90%, Scala - 9%, black matery - 2%Front-end - JavaScript 90%, SCSS - 10%

Back-end: 500 юнит тестов, 600 rest тестов

Front-end: 6600 юнит тестов

Selenium: 150 тестов

Что внутри приложения - тесты последовательно

30 секунд 60 минут

10 минут локально на i7, 30 минут удаленно

IE8 - пф… пол дня? Chrome - час

параллельно

30 секунд 9 минут

5 минут локально на i7, 8 минут удаленно

IE8 - 5 тестов - 15 минут Chrome - 9 минут

локально● изменил BE API - 20 минут (rest +

selenium)● изменил FE - 10 минутна сервере (bamboo, jenkins, etc.)● любой push - 15 минут

Что внутри приложения - итого

программисты ленивыразные компьютеры и системыпока сборка “красная” - никто не делает pushвремя - деньги

НИКТО НЕ ЗАПУСКАЕТ ВСЕ ТЕСТЫ ЛОКАЛЬНО

Зачем быстрые тесты на сервере?

3. Livehack - как сделать быстро

Можно заменить Selenium на REST

Правила непрерывной интеграции

1. автоматическая сборка с тестами2. все комитят часто (min раз в день)3. быстрая сборка и быстрые тесты4. легко узнать статус любой сборки5. тесты используют настоящую БД

4. Легко узнать статус любой сборки

Идеальный мир

Правила непрерывной интеграции

1. автоматическая сборка с тестами2. все комитят часто (min раз в день)3. быстрая сборка и быстрые тесты4. легко узнать статус любой сборки5. тесты используют настоящую БД

5. Настоящая БД

клонируем и очищаем от личных данныхдобавляем настройки для тестовсоздаем слепок (snapshot)каждую ночь разворачиваем слепок

5. Настоящая БД - заказ столика

Continuous DeliveryrevisionNumber=${bamboo.repository.revision.number}hg tag -f --user bambooci -r $revisionNumber latest_RChg pull --rebasehg push

$ ssh root@live_server[root@live_server ~]# cd /www/live/[root@live_server /www/live]# hg up -tag latest_RCUpdated live!!!

Continuous Deliveryпрошли все тесты - новая версия в бой

Интеграция в облаке - Travis/Snap

Travis CI

● Облачный сервис для запуска тестов

● Легкая интеграция с github○ бесплатно для открытых проектов

○ от $120 в месяц для закрытых (100 первых

сборок - бесплатно!)

● JavaScript, PHP, C++, Ruby, Visual Basic

Snap-CI● Облачный сервис для запуска тестов● Простая интеграция - привязать репозиторий

и ввести команду для тестов○ Бесплатно для открытых проектов○ от $30 для закрытых проектов

● Больше настроек через GUI, например, запуск по расписанию (cron) - зачем?

● Дешевле● Менее популярен среди open-source проектов

Исправляем сборку

сломал? исправь! ушел домой? отменим!

Привлекаем внимание

Привлекаем внимание

Просто?

Демо

Используемая литература

1. Bamboo2. Travis CI3. Snap CI4. Демо-проект https://github.

com/theghostbel/travis-mocha5. светофор за $22 http://goo.gl/gp1ldx6. Arduino за $10 и реле за $10

Библиотеки

Тестозапускатели JS кода● Mocha (демо)● Karma (angular)Тестозапускатели E2E (Selenium) ● Protractor (angular)● webdriver.io

Вопросы?Виктор Русакович,Минск[email protected]