CI сервер TeamCity: установка и настройка системы непрерывной интеграции для PHP

Одной из важных задач при разработке большого проекта является развертывание программного продукта. Как правило, чем больше и сложнее продукт тем сложнее будет и развертывание. Оно включает в себя несколько этапов:

  1. Подготовка к развертыванию. Определение переменных, путей и т.д.
  2. Получение исходного кода из репозитария, или обновление его. Для SVN-репозитариев это будет svn::update или svn::checkout.
  3. Установка необходимых прав файлов.
  4. Сборка и компиляция проекта (для компилируемых приложений). Для PHP в этом нет необходимости (конечно если вы не используете HipHop).
  5. Выполнение юнит-тестов над проектом. Самым лучшим варинтом было бы выполнение тестов ДО развертывания, но в простейшей схеме будет так.
  6. Выполнение анализа исходного кода, сборка данных метриких. Это выполняется с помощью утилит типа PHP_CS, PHP_DCD и других.[1]
  7. Отображение результатов билда.

Раньше у нас в компании всё это выполняли скрипты, которые периодически падали, и слова “У нас опять деплой сломался” встречали меня почти каждое утро 🙂

После интенсивного гугления был найден программный сервер непрерывной интеграции 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.

Литература:

1. Обеспечение качества программного продукта

2. Непрерывная интеграция и TeamCity

Leave a Comment