Доклад о том, зачем нужен CI, как он интегрируется в процесс разработки. В докладе есть небольшое демо о весьма известном cloud-based CI сервисе Travis-CI. В процессе демо будет «поломан» билд и затем сразу же починен. Весьма показательно в том плане, что это доказывает простоту всей технологии.
3. Любите тесты?
Любите писать тесты?
Любите запускать тесты?
Любите вручную запускать тесты?
Любите часто вручную запускать тесты?
Менеджер не понимает, зачем вам тесты?
Всем всё равно на тесты?
7. Правила непрерывной интеграции
1. автоматическая сборка с тестами
2. все комитят часто (min раз в день)
3. быстрая сборка и быстрые тесты
4. легко узнать статус любой сборки
5. тесты используют настоящую БД
9. Правила непрерывной интеграции
1. автоматическая сборка с тестами
2. все комитят часто (min раз в день)
3. быстрая сборка и быстрые тесты
4. легко узнать статус любой сборки
5. тесты используют настоящую БД
10. 1. Да, все комитят часто
10 коммитов за 3 часа
~ 1 коммит каждые 20 минут
12. Правила непрерывной интеграции
1. автоматическая сборка с тестами
2. все комитят часто (min раз в день)
3. быстрая сборка и быстрые тесты
4. легко узнать статус любой сборки
5. тесты используют настоящую БД
14. Что внутри приложения - код
Single Page Application
Back-end (api) - Java 90%, Scala - 9%, black
matery - 2%
Front-end - JavaScript 90%, SCSS - 10%
15. 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 минут
16. локально
● изменил BE API - 20 минут (rest +
selenium)
● изменил FE - 10 минут
на сервере (bamboo, jenkins, etc.)
● любой push - 15 минут
Что внутри приложения - итого
17. программисты ленивы
разные компьютеры и системы
пока сборка “красная” - никто не делает push
время - деньги
НИКТО НЕ ЗАПУСКАЕТ ВСЕ ТЕСТЫ
ЛОКАЛЬНО
Зачем быстрые тесты на сервере?
18. 3. Livehack - как сделать быстро
Можно заменить Selenium на REST
19. Правила непрерывной интеграции
1. автоматическая сборка с тестами
2. все комитят часто (min раз в день)
3. быстрая сборка и быстрые тесты
4. легко узнать статус любой сборки
5. тесты используют настоящую БД
22. Правила непрерывной интеграции
1. автоматическая сборка с тестами
2. все комитят часто (min раз в день)
3. быстрая сборка и быстрые тесты
4. легко узнать статус любой сборки
5. тесты используют настоящую БД
23. 5. Настоящая БД
клонируем и очищаем от личных данных
добавляем настройки для тестов
создаем слепок (snapshot)
каждую ночь разворачиваем слепок
28. Travis CI
● Облачный сервис для запуска тестов
● Легкая интеграция с github
○ бесплатно для открытых проектов
○ от $120 в месяц для закрытых (100 первых
сборок - бесплатно!)
● JavaScript, PHP, C++, Ruby, Visual Basic
29. Snap-CI
● Облачный сервис для запуска тестов
● Простая интеграция - привязать репозиторий
и ввести команду для тестов
○ Бесплатно для открытых проектов
○ от $30 для закрытых проектов
● Больше настроек через GUI, например, запуск
по расписанию (cron) - зачем?
● Дешевле
● Менее популярен среди open-source проектов
34. Используемая литература
1. Bamboo
2. Travis CI
3. Snap CI
4. Демо-проект https://github.
com/theghostbel/travis-mocha
5. светофор за $22 http://goo.gl/gp1ldx
6. Arduino за $10 и реле за $10