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

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

Jul 16, 2015

Download

FDConf
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: «Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Bamboo, Hudson, Jenkins, Travis CI, Snap CI

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 минут

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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!!!

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

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

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

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

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

Travis CI

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Просто?

Демо

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

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

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

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

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

Библиотеки

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

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

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