Услышав шумиху про некую систему интеграционного тестирования hudson, который переименовали в jenkins, я захотел узнать что это и как это можно использовать. Для чего собственно он нужен? В кратце: он вытягивает последнюю версию из git/svn-репозитория и выполняет определённые действия (тестирует, выкладывает на другой сервер, делает отчёты). Всё это происходит автоматически: можно задать время, когда будет выполнятся задания. Можно почитать про пример использования jenkins.
Задача такая: Выполнение unit тестов для yii с отображением покрытия кода
Все действия проводятся на сервере debian squeeze от root.
Установка jenkins
1 2 3 4 | |
По адресу http://serverName:8080/ должен открыться jenkins.
Установка плагинов
1 2 | |
Если от jenkins нужно, чтобы выполнял unit-тесты и делал code coverage, то достаточно установить несколько плагинов, но на самом деле их очень много.
1 2 3 | |
Перезапускаем jenkins:
1
| |
Настройка проекта
Создаём проект. Открываем Новая задача → Имя: Yii. Выбираем “Создать задачу со свободной конфигурацией” → Сохранить.
Меняем файл protected/tests/phpunit.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
../../build – должен указывать на папку build в корневой папке репозитория, создавать её не нужно.
Теперь создаём конфиги, скачивая из https://github.com/Stamm/jenkins-yii/:
1 2 3 4 | |
Чтобы наши конфиги подхватились идём в настройки jenkins и кликаем по ссылке “Пересчитать настройки из файла”. В настройках проекта yii указываем git репозиторий до нашего проекта. Можно даже указать локальный путь, но должны быть права для пользователя jenkins. Добавляем файл теста в protected/unit/
Теперь запускаем сборку. Вот как примерно это выглядит.

Уведомления по email
В конфиге jenkins указываем параметры для подключения к SMTP. Если настроен sendmail или exim, то нужно указать только от кого отсылать письмо. И теперь в настройках проекта yii указываем кому слать письмо об упавших тестах.
Авто-сборка
Можно настроить, чтобы сборки проводились автоматически. Для этого в настройках проекта yii ставим галку у Собирать периодически и в появившемся тестовом поле указываем время запуска в формате cron. Или сделать hook в git:
1 2 3 4 | |
P.S. Я показал только малую часть того, что может делать jenkins. Он может создавать документацию по коду, проверять на наличие дублирования в коде, проверять стиль кодирования и многое, многое другое. Примеры более сложных конфигов config.xml и build.xml
Используемые ссылки: