Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How to make your own Travis CI: Vagrant + KVM

How to make your own Travis CI: Vagrant + KVM

Talk from OmskIT 05/10/2013 about creating your own Travis-inspired CI using Vagrant and Linux KVM (Russian)

Alex Rodionov

October 05, 2013
Tweet

More Decks by Alex Rodionov

Other Decks in Technology

Transcript

  1. КАК СДЕЛАТЬ СВОЙ TRAVIS CI VAGRANT + KVM @p0deje [email protected]

    Thursday, October 3, 13
  2. АЛЕКСЕЙ РОДИОНОВ • 7+ лет в тестировании • Paradev @

    Toptal • Code monkey @ Watir • (ex) Контрибутор @ Mozilla Thursday, October 3, 13
  3. ЧТО ТАКОЕ TRAVIS CI • Сервис непрерывной интеграции • Интеграция

    с Github • Тесты для каждого Pull Request • Интеграция с Campfire/HipChat/IRC • Изолированное окружение Thursday, October 3, 13
  4. В НАЧАЛЕ • Rails, RSpec • Cucumber + Watir-WebDriver •

    Github, Jenkins • Specs ➜ Smoke tests ➜ Sanity tests • Ghprb • parallel_tests, Selenium Grid Thursday, October 3, 13
  5. ПРОБЛЕМЫ • 1,5 тыс. спек • 2 тыс. фич •

    ~ 12 часов полный прогон • Глюки Selenium Grid • Shared resources (db, файлы, порты) • Масштабируемость и переносимость Thursday, October 3, 13
  6. РЕШЕНИЕ • Нужно изолированное окружение • Один процесс в одном

    окружении • Selenium Grid Thursday, October 3, 13
  7. VAGRANT • Создание виртуальных машин из basebox • Настройка машины

    через Puppet, Chef, Shell, etc. • VirtualBox, VMware из коробки • Плагины Thursday, October 3, 13
  8. РЕАЛИЗАЦИЯ • Vagrantfile (VirtualBox) • Puppet (librarian-puppet) Thursday, October 3,

    13
  9. ПЛЮСЫ • Окружение легко и быстро разворачивается • Версии софта

    в коде • “У меня не воспроизводится” • Обновляющиеся браузеры? Thursday, October 3, 13
  10. ПРОБЛЕМЫ • VirtualBox не параллелится (вообще) Thursday, October 3, 13

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

  12. РЕШЕНИЕ • VMware • Linux KVM • Xen • etc.

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

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

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

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

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

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

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

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

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

    МБ) Thursday, October 3, 13
  22. УЛУЧШЕНИЯ • Veewee (Packer) • Сделали полную копию production в

    VM (os, db, locale, date, ruby, libs, etc.) Thursday, October 3, 13
  23. УЛУЧШЕНИЯ • vagrant-exec для удобной работы с машиной • p0deje/display

    для запуска Selenium тестов Thursday, October 3, 13
  24. ТЕПЕРЬ • 4 тыс. спеков • 3 тыс. фич •

    ~ 5 часов на полный прогон • Никаких проблем с Grid • Никаких хаков с shared resources Thursday, October 3, 13
  25. ТЕПЕРЬ • 11 параллельно работающих VM • 155 виртуальных машин

    • Масштабируемость и переносимость • Отказоустойчивость Thursday, October 3, 13
  26. • Параллельное создание VM (~8) • Stale NFS Error в1%

    билдов (who cares) НЕРЕШЕННЫЕ ПРОБЛЕМЫ Thursday, October 3, 13
  27. ЧТО ДАЛЬШЕ • Кастомный сервер с изменениями для каждого Pull

    Request • Миграция на Xen • Миграция на EC2, DigitalOcean Thursday, October 3, 13
  28. @p0deje [email protected] СПАСИБО! Thursday, October 3, 13