2013-10-05 02 Алексей Родионов. Как сделать свой travis ci -...
TRANSCRIPT
АЛЕКСЕЙ РОДИОНОВ
• 7+ лет в тестировании
• Paradev @ Toptal
• Code monkey @ Watir
• (ex) Контрибутор @ Mozilla
Thursday, October 3, 13
ЧТО ТАКОЕ TRAVIS CI
• Сервис непрерывной интеграции
•Интеграция с Github
• Тесты для каждого Pull Request
•Интеграция с Campfire/HipChat/IRC
•Изолированное окружение
Thursday, October 3, 13
В НАЧАЛЕ
• Rails, RSpec
• Cucumber + Watir-WebDriver
•Github, Jenkins
• Specs ➜ Smoke tests ➜ Sanity tests
•Ghprb
• parallel_tests, Selenium Grid
Thursday, October 3, 13
ПРОБЛЕМЫ
• 1,5 тыс. спек
• 2 тыс. фич
• ~ 12 часов полный прогон
• Глюки Selenium Grid
• Shared resources (db, файлы, порты)
•Масштабируемость и переносимость
Thursday, October 3, 13
РЕШЕНИЕ
•Нужно изолированное окружение
•Один процесс в одном окружении
• Selenium Grid
Thursday, October 3, 13
VAGRANT
• Создание виртуальных машин из basebox
•Настройка машины через Puppet, Chef, Shell, etc.
• VirtualBox, VMware из коробки
•Плагины
Thursday, October 3, 13
РЕАЛИЗАЦИЯ
• Vagrantfile (VirtualBox)
• Puppet (librarian-puppet)
Thursday, October 3, 13
ПЛЮСЫ
•Окружение легко и быстро разворачивается
• Версии софта в коде
• “У меня не воспроизводится”
•Обновляющиеся браузеры?
Thursday, October 3, 13
ПРОБЛЕМЫ
• VirtualBox не параллелится (вообще)
Thursday, October 3, 13
ПРОБЛЕМЫ
• VirtualBox не параллелится (вообще)
Thursday, October 3, 13
РЕШЕНИЕ
• VMware
• Linux KVM
•Xen
• etc.
Thursday, October 3, 13
РЕШЕНИЕ
• libvirt
Thursday, October 3, 13
РЕШЕНИЕ
• vagrant-libvirt
• vagrant-kvm
Thursday, October 3, 13
РЕШЕНИЕ
• vagrant-libvirt
• vagrant-kvm (импорт из VirtualBox)
Thursday, October 3, 13
ПРОБЛЕМЫ
• Динамические IP
•NFS в Vagrant далек от идеала
Thursday, October 3, 13
РЕШЕНИЕ
•Поддержка DHCP в vagrant-kvm
•Поддержка exportfs в Vagrant
Thursday, October 3, 13
ПРОБЛЕМЫ
• Segfaults/exceptions/crashes при параллельном создании виртуальных машин
Thursday, October 3, 13
РЕШЕНИЕ
•Не решено :)
Thursday, October 3, 13
ПРОБЛЕМЫ
•Хранение RAW дисков виртуальных машин (~ 3 ГБ)
Thursday, October 3, 13
РЕШЕНИЕ
•Поддержка qcow2 diff образов в vagrant-kvm (~ 300 МБ)
Thursday, October 3, 13
УЛУЧШЕНИЯ
• Veewee (Packer)
• Сделали полную копию production в VM (os, db, locale, date, ruby, libs, etc.)
Thursday, October 3, 13
УЛУЧШЕНИЯ
• vagrant-exec для удобной работы с машиной
• p0deje/display для запуска Selenium тестов
Thursday, October 3, 13
ТЕПЕРЬ
• 4 тыс. спеков
• 3 тыс. фич
• ~ 5 часов на полный прогон
•Никаких проблем с Grid
•Никаких хаков с shared resources
Thursday, October 3, 13
ТЕПЕРЬ
• 11 параллельно работающих VM
• 155 виртуальных машин
•Масштабируемость и переносимость
•Отказоустойчивость
Thursday, October 3, 13
•Параллельное создание VM (~8)
• Stale NFS Error в1% билдов (who cares)
НЕРЕШЕННЫЕ ПРОБЛЕМЫ
Thursday, October 3, 13
ЧТО ДАЛЬШЕ
• Кастомный сервер с изменениями для каждого Pull Request
•Миграция на Xen
•Миграция на EC2, DigitalOcean
Thursday, October 3, 13