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)

D049f551aa71e6326c74002ac8e6788a?s=128

Alex Rodionov

October 05, 2013
Tweet

Transcript

  1. КАК СДЕЛАТЬ СВОЙ TRAVIS CI VAGRANT + KVM @p0deje p0deje@gmail.com

    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 p0deje@gmail.com СПАСИБО! Thursday, October 3, 13