2013-10-05 02 Алексей Родионов. Как сделать свой Travis CI -...

Preview:

Citation preview

КАК СДЕЛАТЬ СВОЙ TRAVIS CIVAGRANT + KVM

@p0dejep0deje@gmail.com

Thursday, October 3, 13

АЛЕКСЕЙ РОДИОНОВ

• 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

@p0dejep0deje@gmail.com

СПАСИБО!

Thursday, October 3, 13

Recommended