2009-08-13 2 views
10

Я использую PHPUnderControl, который работает поверх Cruise Control для моей непрерывной интеграции и модульного тестирования. У меня также есть настройка для запуска PHPDocumentor для генерации phpdoc для меня, и он запускает PHP Code Sniffer для обеспечения стандартов кодирования для меня. Но теперь я хочу настроить что-то на том же сервере (Ubuntu), чтобы упростить развертывание на удаленном сервере. У меня уже есть настройка, поэтому после каждой успешной сборки SVN Export выполняется из trunk в каталог в папке проектов на сервере.PHP Build system

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

Мой вопрос в том, есть ли у кого-нибудь опыт работы с ними и может предоставить какие-то профи и кон? Я начал настраивать Phing на моем сервере и будет пытаться использовать Fabric рядом с ними, но задавался вопросом, может ли кто-нибудь, кто использовал их более широко или должен был масштабировать их, мог бы дать некоторую обратную связь.

ответ

8

Я использовал Capistrano с PHP (хотя это больше похоже на Rails-y, как написано на Ruby).

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

Однако, как и большинство вещей Ruby, есть много крючков и «магии», которые могут запутаться, если вы новичок в Capistrano и пытаетесь сделать что-то сложное с ним.

Что касается того, как он сравнивается с другими инструментами развертывания, я не могу комментировать. Я знаю, что мы использовали Финга, но я не уверен, почему мы перешли на Капистрано.

+0

Мне нравится Capistrano. +1 –

0

Если бы я был внедрен такой системой развертывания, я бы выбрал немного другое решение из того, что вы указали выше. Вместо того, чтобы иметь код, который выполняется локально в моей системе, подключается к списку удаленных серверов и выполняет «работу» там, я бы упаковал модуль обновления с остальной частью кода и вытащил данные обновления с моего сервера по требованию (точнее, когда я «сказал» это сделать). Таким образом, вам гораздо меньше беспокоиться о вашем конце (вам просто нужно обслуживать обновленный код через http по запросу, а удаленный сервер обрабатывает остальные). Только мои 2 цента.

1

Мы используем phing, и это пригодится. Мы не используем его для упаковки, но не слишком сложно заставить его делать то, что вы ищете. В основном мы используем его для выполнения общих задач, таких как очистка кешей, создание сайтов разработки и другие задачи, которые помогают помощнику в разработке. Это была большая помощь, и из того, что я могу собрать, кажется, что это клон-клоун, хотя у него может не быть всех функций, которые есть у муравья.

0

Я написал свой собственный инструмент rsync для этого, потому что я работаю с очень плохим подключением к Интернету на третьем континенте и имею все виды сбоев и голодных подключений, так что rsync не работает.

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

Лучше, если вы используете полную независимую зеркальную систему на своей веб-хост-системе и включаете некоторые небольшие, но фундаментальные модульные тесты после миграции. Затем выполните переключение root, чтобы обновить веб-сайт в Интернете. Это потребует запуска нескольких интерактивных сервисов в режиме только для чтения во время миграции (к сожалению, функция, которую не так много людей реализуют).

Но прежде всего - подумайте, действительно ли это стоит того, чтобы делать это - если вы только обновляете каждую четверть, то простого контрольного списка на бумаге будет достаточно.

2

Если вам нравится Capistrano, но пожелал, чтобы это было немного больше PHP'ish, посмотрите Fredistrano.

Я написал автоматическую сборку (экспорт SVN, кодировку Zend Guard и т. Д.) И систему развертывания с использованием Phing один раз и нашел большую боль в использовании. Всякий раз, когда мне приходилось писать специальную задачу, я чувствовал, что мне нужно перепрыгнуть через многие обручи, чтобы заставить ее работать.

Итак, в эти дни я просто пишу простые сценарии bash, которые строят с помощью SVN-checkout, кодирования, создания тега в SVN и развертывания через rsync. Это может быть низкотехнологичное, а у Phing могут быть некоторые превосходные функции, но по крайней мере это не мешает мне.

2

Theres новый инструмент для сборки, называемый Bldr. Он использует Yaml для config, вместо xml, как и большинство систем сборки, и его очень расширяемый.

http://bldr.io