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

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

Date post: 16-Jun-2015
Category:
Upload: -
View: 200 times
Download: 1 times
Share this document with a friend
Popular Tags:
28
КАК СДЕЛАТЬ СВОЙ TRAVIS CI VAGRANT + KVM @p0deje [email protected] Thursday, October 3, 13
Transcript
Page 1: 2013-10-05 02 Алексей Родионов. Как сделать свой Travis CI - Vagrant + KVM

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

@[email protected]

Thursday, October 3, 13

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

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

• 7+ лет в тестировании

• Paradev @ Toptal

• Code monkey @ Watir

• (ex) Контрибутор @ Mozilla

Thursday, October 3, 13

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

ЧТО ТАКОЕ TRAVIS CI

• Сервис непрерывной интеграции

•Интеграция с Github

• Тесты для каждого Pull Request

•Интеграция с Campfire/HipChat/IRC

•Изолированное окружение

Thursday, October 3, 13

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

В НАЧАЛЕ

• Rails, RSpec

• Cucumber + Watir-WebDriver

•Github, Jenkins

• Specs ➜ Smoke tests ➜ Sanity tests

•Ghprb

• parallel_tests, Selenium Grid

Thursday, October 3, 13

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

ПРОБЛЕМЫ

• 1,5 тыс. спек

• 2 тыс. фич

• ~ 12 часов полный прогон

• Глюки Selenium Grid

• Shared resources (db, файлы, порты)

•Масштабируемость и переносимость

Thursday, October 3, 13

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

РЕШЕНИЕ

•Нужно изолированное окружение

•Один процесс в одном окружении

• Selenium Grid

Thursday, October 3, 13

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

VAGRANT

• Создание виртуальных машин из basebox

•Настройка машины через Puppet, Chef, Shell, etc.

• VirtualBox, VMware из коробки

•Плагины

Thursday, October 3, 13

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

РЕАЛИЗАЦИЯ

• Vagrantfile (VirtualBox)

• Puppet (librarian-puppet)

Thursday, October 3, 13

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

ПЛЮСЫ

•Окружение легко и быстро разворачивается

• Версии софта в коде

• “У меня не воспроизводится”

•Обновляющиеся браузеры?

Thursday, October 3, 13

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

ПРОБЛЕМЫ

• VirtualBox не параллелится (вообще)

Thursday, October 3, 13

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

ПРОБЛЕМЫ

• VirtualBox не параллелится (вообще)

Thursday, October 3, 13

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

РЕШЕНИЕ

• VMware

• Linux KVM

•Xen

• etc.

Thursday, October 3, 13

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

РЕШЕНИЕ

• libvirt

Thursday, October 3, 13

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

РЕШЕНИЕ

• vagrant-libvirt

• vagrant-kvm

Thursday, October 3, 13

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

РЕШЕНИЕ

• vagrant-libvirt

• vagrant-kvm (импорт из VirtualBox)

Thursday, October 3, 13

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

ПРОБЛЕМЫ

• Динамические IP

•NFS в Vagrant далек от идеала

Thursday, October 3, 13

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

РЕШЕНИЕ

•Поддержка DHCP в vagrant-kvm

•Поддержка exportfs в Vagrant

Thursday, October 3, 13

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

ПРОБЛЕМЫ

• Segfaults/exceptions/crashes при параллельном создании виртуальных машин

Thursday, October 3, 13

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

РЕШЕНИЕ

•Не решено :)

Thursday, October 3, 13

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

ПРОБЛЕМЫ

•Хранение RAW дисков виртуальных машин (~ 3 ГБ)

Thursday, October 3, 13

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

РЕШЕНИЕ

•Поддержка qcow2 diff образов в vagrant-kvm (~ 300 МБ)

Thursday, October 3, 13

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

УЛУЧШЕНИЯ

• Veewee (Packer)

• Сделали полную копию production в VM (os, db, locale, date, ruby, libs, etc.)

Thursday, October 3, 13

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

УЛУЧШЕНИЯ

• vagrant-exec для удобной работы с машиной

• p0deje/display для запуска Selenium тестов

Thursday, October 3, 13

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

ТЕПЕРЬ

• 4 тыс. спеков

• 3 тыс. фич

• ~ 5 часов на полный прогон

•Никаких проблем с Grid

•Никаких хаков с shared resources

Thursday, October 3, 13

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

ТЕПЕРЬ

• 11 параллельно работающих VM

• 155 виртуальных машин

•Масштабируемость и переносимость

•Отказоустойчивость

Thursday, October 3, 13

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

•Параллельное создание VM (~8)

• Stale NFS Error в1% билдов (who cares)

НЕРЕШЕННЫЕ ПРОБЛЕМЫ

Thursday, October 3, 13

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

ЧТО ДАЛЬШЕ

• Кастомный сервер с изменениями для каждого Pull Request

•Миграция на Xen

•Миграция на EC2, DigitalOcean

Thursday, October 3, 13

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

@[email protected]

СПАСИБО!

Thursday, October 3, 13


Recommended