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