$30 off During Our Annual Pro Sale. View Details »

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide