Инструменты сборки / интеграции на PHP: вы их используете? [закрыто]
-
05-07-2019 - |
Вопрос
После прочтения " современного рабочего процесса PHP " статья в выпуске журнала php | architect за ноябрь 2008 года , в котором обсуждалось модульное тестирование ( phpUnit ), инструменты сборки ( Phing ) и непрерывная интеграция ( Xinc ) Я вдохновлен узнать больше о некоторых инструментах, доступных для PHP, особенно Phing.
В прошлом я часто выполнял развертывание на производственном сервере, запустив работающий сайт в качестве рабочей копии subversion и просто запустив " svn update " на производственной коробке, чтобы развернуть последнюю версию кода. Р>
Используете ли вы инструменты сборки для кода PHP? Какие преимущества, по вашему мнению, они предлагают перед развертыванием напрямую из Subversion? На что мне обращать внимание или с какими проблемами я могу столкнуться?
Решение
Я использовал Phing и Ant и предпочитаю последнее гораздо больше. Я изначально пошел с Phing, потому что он написан на PHP, но, честно говоря, он не такой зрелый, как Ant. В конце концов, наличие зрелой системы сборки с большим сообществом стоит больше.
Вещи, сделанные с помощью Ant / Phing:
<Ол>Другие советы
Большая проблема, которую я вижу с Phing, заключается в том, что он создает ненужный слой косвенности. PHP является языком сценариев, и поэтому может быть запущен напрямую. Использование Phing конфигурации XML плохо подходит для языка: она обеспечивает более читаемую декларативную конфигурацию, но за счет потери какой-либо гибкости языка. С Ant (вдохновением для этого маршрута) это имеет смысл, поскольку Java не обладает такой гибкостью, поскольку она менее динамична и требует компиляции.
К сожалению, я не видел много хороших альтернатив в пространстве PHP, и, в отличие от других языков, инструменты сборки не так важны или не являются частью культуры, поэтому эволюция другого хорошо поддерживаемого варианта может произойти не скоро. р>
Поэтому я бы придерживался опций, которые ближе к тому, что PHP может делать из культур, которые более агрессивно поддерживают инструменты сборки. Обычно я использую Gradle . Rake также отлично работает в зависимости от того, с каким языком вы хотите обмануть (и могут быть другие подобные варианты ). Вы должны также взвесить такие вещи, как поддержка Webdriver, если вам нравятся такие вещи. В противном случае создание облегченного решения с использованием PHP и / или BASH должно охватывать все, сохраняя прозрачность
Я посмотрел на Phing, он выглядит довольно круто. Для проекта, над которым я работаю, я на самом деле использую Ant Apache Ant . Я использую это, чтобы сделать несколько вещей:
<Ол>Я думаю, что Phing стоит посмотреть поверх Ant, потому что это нативный PHP, что может быть приятно. Также, если вы делаете что-то большее, чем просто копирование / перемещение файлов, обратите внимание на проблемы с производительностью при переходе в производственную среду. У меня была проблема, когда компрессор YUI работал нормально на моей локальной машине, но на относительно небольшом VPS он работал очень медленно.
В проекте, над которым я сейчас работаю, мы используем phpUnderControl для запуска тестов и получения быстрая обратная связь, когда что-то сломано. Мы планируем использовать его и для других тестов, таких как некоторые, написанные в Watir .