Slide 1

Slide 1 text

КАК СДЕЛАТЬ СВОЙ TRAVIS CI VAGRANT + KVM @p0deje [email protected] Thursday, October 3, 13

Slide 2

Slide 2 text

АЛЕКСЕЙ РОДИОНОВ • 7+ лет в тестировании • Paradev @ Toptal • Code monkey @ Watir • (ex) Контрибутор @ Mozilla Thursday, October 3, 13

Slide 3

Slide 3 text

ЧТО ТАКОЕ TRAVIS CI • Сервис непрерывной интеграции • Интеграция с Github • Тесты для каждого Pull Request • Интеграция с Campfire/HipChat/IRC • Изолированное окружение Thursday, October 3, 13

Slide 4

Slide 4 text

В НАЧАЛЕ • Rails, RSpec • Cucumber + Watir-WebDriver • Github, Jenkins • Specs ➜ Smoke tests ➜ Sanity tests • Ghprb • parallel_tests, Selenium Grid Thursday, October 3, 13

Slide 5

Slide 5 text

ПРОБЛЕМЫ • 1,5 тыс. спек • 2 тыс. фич • ~ 12 часов полный прогон • Глюки Selenium Grid • Shared resources (db, файлы, порты) • Масштабируемость и переносимость Thursday, October 3, 13

Slide 6

Slide 6 text

РЕШЕНИЕ • Нужно изолированное окружение • Один процесс в одном окружении • Selenium Grid Thursday, October 3, 13

Slide 7

Slide 7 text

VAGRANT • Создание виртуальных машин из basebox • Настройка машины через Puppet, Chef, Shell, etc. • VirtualBox, VMware из коробки • Плагины Thursday, October 3, 13

Slide 8

Slide 8 text

РЕАЛИЗАЦИЯ • Vagrantfile (VirtualBox) • Puppet (librarian-puppet) Thursday, October 3, 13

Slide 9

Slide 9 text

ПЛЮСЫ • Окружение легко и быстро разворачивается • Версии софта в коде • “У меня не воспроизводится” • Обновляющиеся браузеры? Thursday, October 3, 13

Slide 10

Slide 10 text

ПРОБЛЕМЫ • VirtualBox не параллелится (вообще) Thursday, October 3, 13

Slide 11

Slide 11 text

ПРОБЛЕМЫ • VirtualBox не параллелится (вообще) Thursday, October 3, 13

Slide 12

Slide 12 text

РЕШЕНИЕ • VMware • Linux KVM • Xen • etc. Thursday, October 3, 13

Slide 13

Slide 13 text

РЕШЕНИЕ • libvirt Thursday, October 3, 13

Slide 14

Slide 14 text

РЕШЕНИЕ • vagrant-libvirt • vagrant-kvm Thursday, October 3, 13

Slide 15

Slide 15 text

РЕШЕНИЕ • vagrant-libvirt • vagrant-kvm (импорт из VirtualBox) Thursday, October 3, 13

Slide 16

Slide 16 text

ПРОБЛЕМЫ • Динамические IP • NFS в Vagrant далек от идеала Thursday, October 3, 13

Slide 17

Slide 17 text

РЕШЕНИЕ • Поддержка DHCP в vagrant-kvm • Поддержка exportfs в Vagrant Thursday, October 3, 13

Slide 18

Slide 18 text

ПРОБЛЕМЫ • Segfaults/exceptions/crashes при параллельном создании виртуальных машин Thursday, October 3, 13

Slide 19

Slide 19 text

РЕШЕНИЕ • Не решено :) Thursday, October 3, 13

Slide 20

Slide 20 text

ПРОБЛЕМЫ • Хранение RAW дисков виртуальных машин (~ 3 ГБ) Thursday, October 3, 13

Slide 21

Slide 21 text

РЕШЕНИЕ • Поддержка qcow2 diff образов в vagrant-kvm (~ 300 МБ) Thursday, October 3, 13

Slide 22

Slide 22 text

УЛУЧШЕНИЯ • Veewee (Packer) • Сделали полную копию production в VM (os, db, locale, date, ruby, libs, etc.) Thursday, October 3, 13

Slide 23

Slide 23 text

УЛУЧШЕНИЯ • vagrant-exec для удобной работы с машиной • p0deje/display для запуска Selenium тестов Thursday, October 3, 13

Slide 24

Slide 24 text

ТЕПЕРЬ • 4 тыс. спеков • 3 тыс. фич • ~ 5 часов на полный прогон • Никаких проблем с Grid • Никаких хаков с shared resources Thursday, October 3, 13

Slide 25

Slide 25 text

ТЕПЕРЬ • 11 параллельно работающих VM • 155 виртуальных машин • Масштабируемость и переносимость • Отказоустойчивость Thursday, October 3, 13

Slide 26

Slide 26 text

• Параллельное создание VM (~8) • Stale NFS Error в1% билдов (who cares) НЕРЕШЕННЫЕ ПРОБЛЕМЫ Thursday, October 3, 13

Slide 27

Slide 27 text

ЧТО ДАЛЬШЕ • Кастомный сервер с изменениями для каждого Pull Request • Миграция на Xen • Миграция на EC2, DigitalOcean Thursday, October 3, 13

Slide 28

Slide 28 text

@p0deje [email protected] СПАСИБО! Thursday, October 3, 13