Инструменты сборки / интеграции на PHP: вы их используете? [закрыто]

StackOverflow https://stackoverflow.com/questions/623079

Вопрос

После прочтения " современного рабочего процесса PHP " статья в выпуске журнала php | architect за ноябрь 2008 года , в котором обсуждалось модульное тестирование ( phpUnit ), инструменты сборки ( Phing ) и непрерывная интеграция ( Xinc ) Я вдохновлен узнать больше о некоторых инструментах, доступных для PHP, особенно Phing.

В прошлом я часто выполнял развертывание на производственном сервере, запустив работающий сайт в качестве рабочей копии subversion и просто запустив " svn update " на производственной коробке, чтобы развернуть последнюю версию кода.

Используете ли вы инструменты сборки для кода PHP? Какие преимущества, по вашему мнению, они предлагают перед развертыванием напрямую из Subversion? На что мне обращать внимание или с какими проблемами я могу столкнуться?

Это было полезно?

Решение

Я использовал Phing и Ant и предпочитаю последнее гораздо больше. Я изначально пошел с Phing, потому что он написан на PHP, но, честно говоря, он не такой зрелый, как Ant. В конце концов, наличие зрелой системы сборки с большим сообществом стоит больше.

Вещи, сделанные с помощью Ant / Phing:

<Ол>
  • От базового извлечения loalize до определенного языка убедитесь, что есть зависимости (другие библиотеки, каталоги и т. д.)
  • если они у вас есть, компилируйте шаблоны и т. д.
  • Установите целевую базу данных до требуемой версии, в зависимости от версии проверенного кода
  • запускать юнит-тесты и т. д.
  • Другие советы

    Большая проблема, которую я вижу с Phing, заключается в том, что он создает ненужный слой косвенности. PHP является языком сценариев, и поэтому может быть запущен напрямую. Использование Phing конфигурации XML плохо подходит для языка: она обеспечивает более читаемую декларативную конфигурацию, но за счет потери какой-либо гибкости языка. С Ant (вдохновением для этого маршрута) это имеет смысл, поскольку Java не обладает такой гибкостью, поскольку она менее динамична и требует компиляции.

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

    Поэтому я бы придерживался опций, которые ближе к тому, что PHP может делать из культур, которые более агрессивно поддерживают инструменты сборки. Обычно я использую Gradle . Rake также отлично работает в зависимости от того, с каким языком вы хотите обмануть (и могут быть другие подобные варианты ). Вы должны также взвесить такие вещи, как поддержка Webdriver, если вам нравятся такие вещи. В противном случае создание облегченного решения с использованием PHP и / или BASH должно охватывать все, сохраняя прозрачность

    Я посмотрел на Phing, он выглядит довольно круто. Для проекта, над которым я работаю, я на самом деле использую Ant Apache Ant . Я использую это, чтобы сделать несколько вещей:

    <Ол>
  • Объединение и сжатие Javascript и CSS (сжатие выполняется с помощью YUI Compressor
  • Замените стандартные файлы конфигурации рабочими файлами конфигурации (например, переименуйте config.php.production в config.php)
  • Удалите ненужные файлы (например, файл сборки ant, build.xml)
  • Я думаю, что Phing стоит посмотреть поверх Ant, потому что это нативный PHP, что может быть приятно. Также, если вы делаете что-то большее, чем просто копирование / перемещение файлов, обратите внимание на проблемы с производительностью при переходе в производственную среду. У меня была проблема, когда компрессор YUI работал нормально на моей локальной машине, но на относительно небольшом VPS он работал очень медленно.

    В проекте, над которым я сейчас работаю, мы используем phpUnderControl для запуска тестов и получения быстрая обратная связь, когда что-то сломано. Мы планируем использовать его и для других тестов, таких как некоторые, написанные в Watir .

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top