CI сервер TeamCity: установка и настройка системы непрерывной интеграции для PHP
Одной из важных задач при разработке большого проекта является развертывание программного продукта. Как правило, чем больше и сложнее продукт тем сложнее будет и развертывание. Оно включает в себя несколько этапов:
- Подготовка к развертыванию. Определение переменных, путей и т.д.
- Получение исходного кода из репозитария, или обновление его. Для SVN-репозитариев это будет svn::update или svn::checkout.
- Установка необходимых прав файлов.
- Сборка и компиляция проекта (для компилируемых приложений). Для PHP в этом нет необходимости (конечно если вы не используете HipHop).
- Выполнение юнит-тестов над проектом. Самым лучшим варинтом было бы выполнение тестов ДО развертывания, но в простейшей схеме будет так.
- Выполнение анализа исходного кода, сборка данных метриких. Это выполняется с помощью утилит типа PHP_CS, PHP_DCD и других.[1]
- Отображение результатов билда.
Раньше у нас в компании всё это выполняли скрипты, которые периодически падали, и слова “У нас опять деплой сломался” встречали меня почти каждое утро 🙂
После интенсивного гугления был найден программный сервер непрерывной интеграции TeamCity от уже практически любимой мной компании JetBrains. По сути ПО представляет собой веб-интерфейс к различным билдерам, в списке значатся:
- Apache Ant (забегая вперед скажу, что его то мы и используем)
- Comand line (просто выполняет команду)
- FxCop
- Inspections
- Ipr
- Maven2
- MsBuild
- Nant
- Rake
- Visual Studio
Кстати TeamCity написан на Java. Это и плюс и минус. Плюс в кроссплатформенности, ну а минус в тормознутости. Памяти кушает будь здоров.
Итак, сначала качаем продукт по адресу http://www.jetbrains.com/teamcity/download/index.html Я сначала умудрился скачать версию 6, и только когда запустил её понял что что-то не так. Половина менюшек просто отсутствовала, но ПО было на редкость стабильное, поэтому я и не заметил букв EA (Early Access) в названии. Качаем версию 5.1. После распаковки архива переносим его содержимое в папку /opt/teamcity
Софт структурно состоит из двух частей. Первая – это билд-агент, который лежит в папке ./buildAgent Вторая часть – сама веб-морда. TeamCity не требует установки, поэтому запускаем сначала агент:
> sudo /opt/teamcity/buildAgent/bin/agent.sh start
а потом сервер
>sudo /opt/teamcity/bin/teamcity-server.sh start
Ждем минуты две и заходим броузером по адресу http://localhost:8111/ Кстати порты 8111 и 9090 должны быть открыты перед запуском системы.
После этого вводим логин пароль, почтовый адрес и система установлена. Все данные пользователя хранятся в ~/.BuildServer так что если будете переносить TeamCity не забудьте и её.
Если агент успешно подключился к серверу, то в одной из закладок вы увидите Agents(1).
После этого создаем проект, настраиваем VCS (Version control system), дальше сброщик (пример конфигурации здесь) и можем запускать проект на сборку кнопкой Run.
Литература: