La réponse est qu'ils ne sont certainement pas redondants.
Il est vrai que l'on peut obtenir le même résultat final en utilisant un script bash qui inclut des commandes drush (au moins la partie construction). Mais, si ce que nous cherchons à faire est d'intégrer notre processus dans un framework CI comme JenkinsCI, alors utiliser quelque chose comme le phing (fourmi ou capistrano pourrait être substitué ici) est la voie à suivre.
Avec le phing, nous pouvons diviser le processus de construction en segments distincts qui peuvent faire rapport à Jenkins de manière intelligente.
Ainsi par exemple. Disons que dans le cadre de mon processus de construction, j'utilise drush pour activer deux modules, node et shouldfail. Ensuite, la construction devrait échouer. Mais si tout ce que nous faisons est de dire à JenkinsCI d'exécuter la commande shell suivante, JenkinsCI dira que la construction a réussi:
drush --quiet --yes @staging en node shouldfail
De toute évidence, ce n'est pas vrai. Cependant, si à la place nous utilisons ant ou phing pour définir le même processus, nous pouvons également ajouter une logique de défaillance que Jenkins comprend, et donc échouer comme il se doit. Le script de génération de phing suivant essaie de faire la même chose que l'ancienne commande, mais échoue comme nous nous y attendons:
<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>
BTW ant et phing sont presque identiques. L'avantage pour les développeurs PHP d'utiliser le phing est qu'ils peuvent étendre plus facilement le phing.
En ce qui concerne le développement et le drush de Drupal, je ne vois pas trop d'intérêt à étendre le phing, et je pense que l'exécution de tâches d'exécution suffirait à créer un modèle de build intelligent.
Eh bien, afin de répondre à ma question, j'ai fini par investir du temps pour comprendre le phing. C'est en fait assez intuitif et cela ne prend pas trop de temps à comprendre.