- PVSM.RU - https://www.pvsm.ru -

Наверняка все слышали шумиху вокруг проекта travis-ci.org [1]. Я не являюсь исключением и учитывая, что один из его разработчиков, Джош Калдеримис (Josh Kalderimis) [2], выступивший на прошедшей конференции toster.ru [3], разжег мой интерес еще больше, то я решил окончательно разобраться, что такое travis-ci и с чем его едят. После прочтения вы узнаете как данный сервис может помочь ruby-разработчикам, а также как ему могут помочь они. Располагайтесь поудобнее, начнем...
Как оказалось, термин «continuous integration» достаточно старый. Он был введен Мартином Фаулером (Martin Fowler) [4] в 2000-ом году и изложен в статье «Continuous Integration» [5] и по-русски звучит как «непрерывная интеграция». Это часть процесса разработки, в которой разрабатываемый проект собирается/тестируется в различных средах выполнения автоматически и непрерывно. Задумывалась данная методика для наиболее быстрого выявления ошибок/противоречий интеграции проекта, а соотвественно снижения расходов на последующие простои.
Принцип достаточно прост: на отдельной машине работает некая служба, в обязанности которой входит получение исходного кода проекта, его сборка, тестирование, логирование, а также возможность предоставить для анализа данные выполнения перечисленных операций.
Конечно же, бесплатный сыр бывает только в мышеловке и за удобство необходимо платить: выделить отдельный сервер и поддерживать его в рабочем состоянии, обеспечить наличие необходимых программных комплексов, настроить среды выполнения, делать резервные копии данных и т.д. Все это требует немало времени и ресурсов. И вполне логичным кажется возможность делегировать эту ответсвенность на сторонние сервисы. Вот как раз таким и является travis-ci — «хостинг непрерывной интеграции для open source сообщества». Пришло время посмотреть на него поближе.
Travis-ci поддерживает множество языков программирования среди которых есть и ruby (что неудивительно, т.к. изначально он разрабатывался для ruby-проектов). Начать пользоваться сервисом очень просто. Нужно всего лишь предпринять несколько шагов, которые подробно описаны в собственном гайде [6] проекта. Я лишь опишу процесс в целом.
Travis-ci работает с сервисом github.com [7], поэтому первым делом необходимо выложить туда исходный код своего проекта. За исключением мелких технических настроек (вроде установки хуков в репозитории), весь процесс сводится к описанию различных опций в файле travis.yml. В нем нужно описать на каком языке работает проект, какие версии языка необходимо использовать (можно сразу все), среды окружения (здесь [8] приведен пример такого файла для ruby). Данный файл необходимо разместить в корне github-репозитория.
Если настройка прошла успешно, то travis-ci начинает непрерывно тестировать проект, отображая при этом текущий статус: красный цвет (возникли проблемы при тестировании), желтый (есть предупреждения) и зеленый (все тесты пройдены успешно). Помимо статуса можно увидеть: сообщение об ошибке или предупреждение, если что-то пошло не так; последний коммит и его автора; историю сборок и т.д. В целом интерфейс достаточно информативен и понятен. Помимо этого, travis-ci будет оповещать о проблемах по электронной почте.
#travis.yml
rvm:
- 1.9.3
- rbx-18mode
env:
- FOO=foo BAR=bar
- FOO=bar BAR=foo
Travis-ci волей — не волей, вызывает к себе интерес. Учитывая еще тот факт, что в данный момент на нем хостятся довольно крупные и известные проекты, спрос на такие услуги есть. Сервис только набирает обороты и хочется пожелать ему обрести большое сообщество пользователей.
Автор: rezwyi
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ruby/3909
Ссылки в тексте:
[1] travis-ci.org: http://travis-ci.org/
[2] Джош Калдеримис (Josh Kalderimis): http://twitter.com/joshkalderimis
[3] toster.ru: http://toster.ru/conferences/10-02-2012-ruby/results
[4] Мартином Фаулером (Martin Fowler): http://martinfowler.com
[5] «Continuous Integration»: http://martinfowler.com/articles/continuousintegration.html
[6] гайде: http://about.travis-ci.org/docs/user/getting-started/
[7] github.com: http://github.com
[8] здесь: http://about.travis-ci.org/docs/user/languages/ruby/
[9] travis-lint: http://github.com/travis-ci/travis-lint
[10] «Bob The Builder»: http://en.wikipedia.org/wiki/Bob_the_Builder
[11] love.travis-ci.org: https://love.travis-ci.org/
[12] Документация по сервису: http://about.travis-ci.org/
[13] Профиль на github.com: https://github.com/travis-ci/
[14] Твиттер Свена Фукса: http://twitter.com/svenfuchs
Нажмите здесь для печати.