Как выглядит хороший рабочий процесс Phing? - PullRequest
9 голосов
/ 16 октября 2011

Я пытаюсь прийти в сознание CI и играю с Phing в эти выходные.Кажется, что все достаточно просто для использования, и уже есть много примеров.

Однако что-то, что меня до сих пор удивляет, это то, как люди на самом деле его используют.То есть я не ищу, какие тесты вы проводите, а вместо этого предлагает рабочий процесс с использованием Phing, на каком этапе вы его активируете, на каком этапе цикла разработки он действует.

Например,У нас есть несколько веб-сайтов, в настоящее время мы редактируем исходный код локально и при сохранении загрузки на действующий сайт (я знаю, насколько это плохо ...), мы проводим небольшое быстрое тестирование и проверяем, работает ли код в соответствии с планом.Если это так, мы обязуемся делать репо и продолжать.Если нет, мы можем откатиться или отредактировать, отменить и сохранить заново.Хотя теперь это кажется сумасшедшим, простота хорошо сработала для нас.

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

Не могли бы вы предложить:

  • Редактировать код локально.
  • При сохранении загрузите файл на тестовый сайт.
  • Протестируйте сайт на промежуточном сервере.
  • Все в порядке, внесите изменения в репозитории.Затем запустите phing.
  • Оцените выходные данные Phing, обновите код по мере необходимости, повторно сохраните, повторно подтвердите, повторно запустите phing.
  • Если предположить, что Phing проходит, так как я запускаю phing на другом сервере, выполните экспорт svn и запустите процесс развертывания.

Вышеприведенное кажется мне немного сложным.Это потому, что мне кажется, что я пытаюсь объединить тестовое развертывание с живым развертыванием, которое меня смущает?

Также может показаться, что коммитить немного назад, затем запустить Phing, затем отредактировать и, возможно, повторно-примите попытку перед повторной попыткой.

Следовательно, имеет смысл:

  • Редактировать код локально.
  • Сохраните, выполните тестовую сборку развертывания с Phing.
  • Убедитесь, что код прошел все проверки кода и т. Д.
  • Используя Phing, убедитесь, что код скопирован на промежуточный сервер..
  • Протестируйте сайт на промежуточном сервере.
  • Все в порядке, зафиксируйте изменения в репозиториях.
  • Затем выполните сборку в режиме реального времени с Phing.

Проблема с вышесказанным в том, что, скажем, я просто хотел исправить написание слова, жестко запрограммированного на HTML-странице, кажется излишним?

Наконец, как люди настраивают свои серверы,у вас есть один сервер для живого сайта, один для промежуточного размещения и один для размещения Phing (и любого программного обеспечения CI)?

1 Ответ

6 голосов
/ 17 октября 2011

Смысл таких инструментов, как Phing, - автоматизация Итак, чтобы ответить на этот вопрос «на какой стадии вы его активируете, на какой стадии цикла разработки он действует», я бы сказал, что вы должны внести его, как только почувствуете, что вы получите выгоду от используя его.

Например, если у вас есть процесс, для выполнения которого требуется несколько команд, было бы полезно использовать Phing (или даже просто скрипт оболочки) для автоматизации шагов, особенно если требуется более одного человека это или это особенно подвержено ошибкам.

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

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

  • Если у вас есть автоматические тесты, используйте phing для их запуска
  • Подтвердить контроль источника
  • Используйте phing для развертывания кода
  • Используйте phing для экспорта svn или любых других ручных действий

Так что в основном я бы сделал то, что вы предложили во втором списке.

Вы, вероятно, должны создавать команды phing для отдельных шагов и команды phing для запуска часто запускаемых вместе команд (например, тесты, а затем развертывание).

Это позволит вам пропустить фазы, если вы считаете, что это необходимо, например, в приведенном вами примере об изменении только некоторого текста.

Типичный подход к серверам заключается в том, чтобы работающий сайт находился на своем собственном сервере, а затем сервер промежуточной проверки / тестирования максимально точно отражал его. Для CI или других утилит их обычно можно разместить на промежуточном сервере, доказав, что они не влияют на основное разрабатываемое вами приложение.

...