A resposta é que eles certamente não são redundantes.
É verdade que é possível obter o mesmo resultado final usando um script bash que inclui comandos drush (pelo menos a parte da construção). Mas, se o que pretendemos fazer é integrar nosso processo a uma estrutura de IC como o JenkinsCI, usar algo como phing (formiga ou capistrano pode ser substituído aqui) é o caminho a seguir.
Com o phing, podemos dividir o processo de criação em segmentos distintos, que podem ser reportados ao Jenkins de maneira inteligente.
Então, por exemplo. Digamos que, como parte do meu processo de construção, eu use o drush para habilitar dois módulos, node e shouldfail. Então a construção falhará. Mas se tudo o que fazemos é dizer ao JenkinsCI para executar o seguinte comando do shell, o JenkinsCI dirá que a compilação PASSEU:
drush --quiet --yes @staging en node shouldfail
Claramente isso não está certo. No entanto, se usarmos ant ou phing para definir o mesmo processo, também podemos adicionar alguma lógica de falha que Jenkins entende e, portanto, falha como deveria. O script de construção de phing a seguir tenta fazer a mesma coisa que o comando anterior, mas falha como esperamos:
<project name="staging" default="enable modules" description="Jenkins Staging Build">
<target name="enable modules">
<exec command="drush --quiet --yes @staging en node shouldfail" error='error' checkreturn="true">
</exec>
<loadfile property="en.error" file="error" />
<if>
<contains string="${en.error}" substring="warning" />
<then>
<property name="en.fail" value="Could not enable all modules" />
</then>
</if>
<fail if="en.fail" message="${en.fail}" />
</target>
</project>
Entre formiga e phing são quase idênticos. A vantagem para desenvolvedores de PHP no uso de phing é que eles podem estender o phing de maneira mais confortável.
Quanto ao desenvolvimento e drush do Drupal serem tão bons quanto são, não vejo muito valor em estender o phing e acho que a execução de tarefas exec seria suficiente para criar um modelo de construção inteligente.
Bem, para responder à minha pergunta, acabei investindo tempo para descobrir phing. Na verdade, é bastante intuitivo e não demora muito para descobrir.
Os scripts phing são substitutos dos scripts shell, para controlar a execução de vários comandos e seus resultados. Drush é uma interface CLI para comandos para interagir com um site Drupal ou relacionado ao Drupal. Eles se complementam.
fonte
Sua pergunta: Phing e Drush se sobrepõem?
TLDR; versão: Sorta. Mas principalmente não.
A versão completa: Drush e phing se sobrepõem em apenas algumas instâncias. Principalmente, despejar e arquivar um site seria uma das maiores sobreposições. Você poderia fazer isso no phing, mas teria que escrever muitas tarefas. Você pode despejar um banco de dados, mas o drush o faz tão facilmente com um comando. Phing faz isso, mas você só precisa escrever um script de linha de comando. Onde o phing brilha é a capacidade de executar testes de phpunit, executar ferramentas externas como um jar que comprime seus arquivos css, criar e empacotar uma compilação de seu site / aplicativo drupal, etc.
O que é phing?
Phing é essencialmente o piloto que executa comandos. Se você está familiarizado com o Ant, Phing é na verdade uma porta próxima do Ant (é primo baseado em java). Phing é escrito em PHP.
Você pode usar o Phing para automatizar tarefas e relatar resultados com base nessas tarefas. Drush, por outro lado, apenas executa tarefas. Não é possível determinar a avaliação dos resultados da saída.
Exemplo de caso de uso para phing / drush:
Eu preciso drush para despejar o banco de dados e phing para
scp
o pacote de prod para testes.Phing pode armazenar essas configurações em um
build.properties
arquivo externo e originá-las em seu projeto. Também é capaz de armazenar configurações diferentes para cada ambiente. Por exemplo, o Phing pode vincular novamente a última conclusão que foi descartada por drush à raiz do documento correta.Como tudo isso funciona?
Phing é conduzido por um xml. Consome um arquivo build.xml e recebe atributos (às vezes chamados de destinos) e executa comandos simples.
Mais sobre isso:
Eu recomendo que você analise este compartilhamento de slides pelos líderes do projeto Phing:
http://www.slideshare.net/michieltcs/building-and-deploying-php-applications-with-phing
Isso lhe dará um alto nível e um uso concreto (mais o código) do phing. Não está relacionado ao drupal, mas lhe dará uma idéia melhor de como funciona.
fonte