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

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

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

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

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

Вы бы посоветовали:

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

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

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

Следовательно, было бы разумнее:

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

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

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


person stitchour    schedule 16.10.2011    source источник


Ответы (1)


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

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

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

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

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

В общем, я бы сделал в значительной степени то, что вы предложили во втором списке.

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

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

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

person Jani Hartikainen    schedule 16.10.2011
comment
Спасибо, Джани, думаю, я пытаюсь оценить, насколько я понимаю все это. Судя по тому, что вы сказали выше, я понимаю. Что касается серверов, я беспокоюсь о дженкинсах или круиз-контроле, они, по-видимому, немного нуждаются в ресурсах, надеюсь, у кого-то здесь будет личный опыт? - person stitchour; 17.10.2011