Почему отказался от Phing и перешел на Fabric

Недавно принял решение о том, что перестаю использовать Phing скрипты в проектах для построения и поддержки deploy логики и перехожу на Fabric. К принятию такого решения меня подтолкнуло целых две проблемы.

Первая - это не было возможности перейти на использование SSH ключей, т.к. постоянно появлялась ошибка zend_mm_heap corrupted. Простейший код для воспроизведения ошибки выглядит следующим образом:

Вот такой простейший скрипт приводил к ошибке, которая уже давно известна http://www.phing.info/trac/ticket/1072, но до сих пор не исправлена из-за чего использование SSH ключей в полной мере совместно с Phing невозможно.

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

В свою очередь для работы с Fabric не пришлось разбираться в глубинах Python'a и все скрипты были переписаны за несколько часов.

В итоге получил:

  • Всю силу и мощь Python'a;
  • Полноценную поддержку SSH ключей;
  • Многопоточность при развертывании более чем на 1 сервер;
  • и еще много всяких вкусностей...

P.S. На момент написания статьи данный код тестировался на PHP 5.3 и PHP 5.4 с Phing 2.8.2 и приводил к одной и той же ошибке.