Travis CI на службе у автоматизации

В данной заметке хочу поговорить о сервисе, который называется Travis CI. Достаточно интересный проект, о котором может многие и слышали, но не имели возможности попробовать. Так вот, я попробовал и мне очень понравилось, теперь поделюсь своими впечатлениями.

Итак, начнем с самого начала. Для тех, кто не знаком с этим проектом: Travis CI - это облачный сервис, который позволяет пользователям организовать CI процесс для своих проектов. Для того, чтобы начать пользоваться этим сервисом, нужно завести аккаунт на github.

Далее все очень просто: переходим на https://travis-ci.org и логинимся с помощью гитхаб.

Хочу отметить, что Travis меня удивил простотой интеграции, ведь все, что нужно для начала работы, - просто выбрать свой репозиторий и создать в нем файл .travis.yml.

Я экспериментировал со своим репозиторием, в котором лежит проект с Groovy репортером для Jbehave.

Travis CI поддерживает большое количество языков программирования, для полного ознакомления можно почитать здесь.

Мой проект написан на Groovy и собирается с помощью Gradle. Какое удивление - Travis умеет работать со всеми этими штуками. Все, что нужно, - просто указать в созданном файле .travis.yml пару строк:

language: groovy
jdk:
 - oraclejdk7
branches:
 only:
 - master

Идем в Travis CI https://travis-ci.org/profile/${username} и среди своих репозиториев выбираем нужный и включаем его в билд процесс.

Затем меняем в нашем проекте любой файлик, коммитим, пушим и начинается магия. Travis сам понимает, какого рода проект и какой инструмент сборки использовать. Буквально через пару секунд он начинает собирать ваш проект.

В моем случае я наткнулся на одну неприятность: первая сборка завершилась неуспехом =) Проблемой было то, что у тревиса не было прав на вызов команды gradlew. Исправляется это тем, что в наш файл .travis.yml нужно добавить строчку:

before_install:
 - chmod +x gradlew

Для тех, кто знаком с unix системами, эта команда достаточно знакома: она дает права на запуск команды gradlew.

По умолчанию Travis запускает команду gradlew assemble; если вы хотите переопределить такое поведение, то вам нужно дописать еще пару строк в .yml файл:

install: true
script: "./gradlew build -x copyDistFiles"

Ну вот и все. Теперь наш проект собирается и завершается успехом.

Теперь поговорим о тех, кому эта штука может быть полезна. В первую очередь тем, кто пишет свои проекты и не хочет особо париться с настройкой полноценного CI сервера - это очень удобно. Автоматизаторов же должна заинтересовать такая функциональность GUI and Headless Browser Testing. В документации указано, что можно запускать тесты с помощью Sauce Labs, xvfb и phantomjs. Крутяк, да? Эта штука поможет сэкономить кучу времени на настройку энваромента. Попробуйте - и вам понравится.