Автоматизация запуска тестов с помощью Travis CI
Наверняка, вы уже не раз встречали на Гитхабе вот такую зелёную кнопку:
Это Travis CI — бесплатный сервис непрерывной интеграции для Гитхаба. При каждом изменении репозитория Трэвис прогоняет все тесты проекта. И если
Для подключения Трэвиса нужно сделать три вещи:
- Авторизоваться на сайте Трэвиса с помощью OAuth Гитхаба.
- Добавить Git-хук.
- Добавить в проект файл конфигурации: .travis.yml.
Git-хук
Просто «поверните» переключатель напротив вашего проекта в профиле Трэвиса. Трэвис сам добавит нужный хук в репозиторий на Гитхабе.
Конфигурация
Трэвис поддерживает множество языков. Я покажу, как работать с Node. Остальные языки вы найдёте в документации.
Простейший файл .travis.yml выглядит примерно так:
language: node_js
node_js:
- '0.8'
- '0.10'
При каждом изменении репозитория Трэвис сделает следующее (отдельно для Node 0.8 и 0.10):
- склонирует репозиторий;
- установит зависимости (npm install);
- запустит тесты (npm test).
Команды в шагах 2 и 3 зависят от указанного выбранного языка.
Но это совсем простой случай. Часто у проекта есть более сложные зависимости, которые нужно устанавливать вручную. Это делается с помощью скриптов.
Например, тестирование плагина для Гранта:
language: node_js
node_js:
- '0.8'
- '0.10'
before_script:
- npm install -g grunt-cli
Скрипт before_script будет запускаться между шагами 2 и 3. Команды можно писать прямо в .travis.yml (как в примере), а можно указать внешний файл.
Пример посложнее:
language: node_js
node_js:
- '0.8'
- '0.10'
before_script:
- sudo apt-get install fontforge eot-utils
- wget http://people.mozilla.com/~jkew/woff/woff-code-latest.zip
- unzip woff-code-latest.zip -d sfnt2woff && cd sfnt2woff && make && sudo mv sfnt2woff /usr/local/bin/ && cd ..
- npm install -g grunt-cli
Тут устанавливается fontforge и другие утилиты, необходимые для генерации веб-шрифтов. Обратите внимание на первую команду скрипта — Трэвис создаёт для каждого прогона тестов виртуальную машину, к которой у вас есть безпарольный рут-доступ.
В документации описано ещё больше параметров (и остальные скрипты). А для проверки конфигурации можно использовать travis-lint.
One more thing
Трэвис позволяет тестировать не только основной репозиторий проекта, но и все пулреквесты:
Так вы сразу будете видеть, кто поленился запустить и обновить тесты перед отправкой пулреквеста.