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

401 views
297 views

Published on

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
401
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

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

×