Все материалы сюжета:

Vexor.io — облачный CI-сервис (сontinuous integration) для девелоперов, который берет плату только за фактическое время прогона твоих тестов и при этом умеет распараллеливать процессы. Как следствие, время использования тестов уменьшается в разы, а вместе с тем уменьшается и стоимость.

Eжедневно разработчики используют CI-сервисы, однако большинство из них дорогие, медленные и неэффективные. Традиционные CI-сервисы вынуждены резервировать под твой проект ограниченное количество виртуальных машин и постоянно держать их включенными, хотя реально они нужны лишь в момент прогона тестов. То есть фактически ты должен платить за CI, даже если находился в отпуске и ничего не коммитил.

Еще одна проблема с традиционными CI-системами в том, что ты лимитирован зарезервированной под тебя мощностью. Если тебе внезапно понадобилось прогнать тесты повторно или в другой конфигурации/объеме — ты будешь ждать, ждать и еще раз ждать. Ресурсы-то заранее выделены и никак не подстраиваются под твою реальную нагрузку — ни в большую, ни в меньшую сторону.

Ребята из Vexor.io не стали мириться с таким положением дел и запустили поминутную оплату за реальное использование ресурсов. На практике это означает, что ты заплатишь только за те минуты (!), которые использовались для прогона твоих тестов. Если не было коммитов в течение месяца, то счет равен нулю. Все честно. Почему другие CI-сервисы не сделали этого до сих пор — загадка.

Например, Travis CI очень дорогой для начинающих проектов, и не всем под силу платить 129 долларов в месяц, а если потребности возрастают, то 489 долларов в месяц. При таком же объеме тестов, но используя Vexor.io ты заплатишь 10–15 долларов в месяц. Средний же чек за прогон большего количества тестов у Vexor составляет 80 долларов, но при этом у сервиса нет лимита по ресурсам.

Более того, Vexor.io умеет одновременно выделять тебе столько мощности, сколько нужно. В случае, когда ты сделаешь десять коммитов подряд например, Travis CI будет выполнять их последовательно. Vexor же моментально выделит тебе десять серверов и сделает всё параллельно, а значит — быстрее. При этом, помни, платишь только за минуты, которые затрачены на прогон тестов. А сколько при этом работает параллельных воркеров — не имеет значения.
Get started

А как же Open Source?

Безусловно, существуют альтернативы в виде open source решений, но для этого нужен хороший сервер, который необходимо администрировать и тратить рабочее время разработчиков и девопсов. То есть тебе придется настроить не только свой проект, но и саму систему CI. Vexor в этом плане куда круче — как любой SaaS, он не требует никакой настройки. Все, что нужно, — настроить твой проект под CI. А если учесть, что конфиги совместимы с самой популярной CI Travis, процесс переноса превращается в тривиальную задачу.


Работает все это на удивление просто. Базовый файл конфигурации .travis.yml должен быть расположен в корневом каталоге твоего проекта (для Rails-проектов это требование не обязательно). Для поддерживаемых языков процесс конфигурации максимально прост: надо лишь прописать нужный язык в параметре language (например, language: ruby). Таким образом, подготовка окружения и прогон тестов будут проходить в автоматическом режиме согласно выбранному языку.

Если стандартная тестовая конфигурация тебя не устраивает, ее можно кастомизировать под свои нужды с помощью параметров install, script, before_install, before_script. Эти параметры содержат команды, которые будут запущены в shell на соответствующих этапах тестирования:

  • env позволяет вывести список переменных окружения, которые используются в тестах;
  • before_install запускается до установки и предназначен для установки необходимых библиотек и зависимостей;
  • install запускает команду для установки зависимостей, библиотек и всего, что требуется для тестов. Если поле оставить пустым, то будут использованы команды по умолчанию для каждого языка (например, bundle install для Ruby или go get -v ./… для Go);
  • before_script — здесь можно подготовить различные сервисы для тестов, например создать БД;
  • script запускает тесты. Если параметр пуст, то используется команда для запуска тестов для выбранного языка.

Пример .travis.yml для Vexor.io:

language: ruby
before_install: sudo apt-get install libicu-dev
before_script:
- psql -U postgres -c 'create database test;'
- bundle exec rake db:migrate
script: bundle exec rake test:ci

Матрицы билдов

Кроме стандартных параметров конфигурации, ты можешь создать билд-матрицу для запуска тестов поверх разных версий софта, например поверх Ruby 2.0 и Ruby 2.1. Особенно это актуально для библиотек, так как они должны поддерживать разные версии runtime. Лист доступных параметров конфигурации для матрицы:

  • env — переменная окружения;
  • rvm — Ruby-версия;
  • jdk — Java-версия;
  • scala — Scala-версия;
  • go — Go-версия;
  • node_js — Node.js-версия.

Теги:

Оставить мнение

Check Also

Пространство для эксплуатации. Как работает новая RCE-уязвимость в Apache Struts 2

Во фреймворке Apache Struts 2, виновном в утечке данных у Equifax, нашли очередную дыру. О…