答案是它们肯定不是多余的。
的确,使用包含drush命令(至少是建筑部分)的bash脚本可以完成相同的最终结果。但是,如果我们要做的是将我们的流程集成到JenkinsCI之类的CI框架中,那么就可以使用phing之类的方法(此处可以用ant或capistrano代替)。
通过phing,我们可以将构建过程分解为不同的部分,这些部分可以以智能的方式报告给Jenkins。
例如。假设在构建过程中,我使用drush启用了两个模块,即node和shouldfail。然后构建应该失败。但是,如果我们要做的只是告诉JenkinsCI运行以下shell命令,则JenkinsCI会说生成PASSED:
drush --quiet --yes @staging en node shouldfail
显然这是不对的。但是,如果改为使用ant或phing定义相同的过程,则我们还可以添加Jenkins可以理解的某些失败逻辑,因此可以按需失败。以下phing构建脚本试图执行与前一个命令相同的操作,但由于我们期望的失败而失败:
<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蚂蚁和网络钓鱼几乎相同。PHP开发人员使用phing的优势在于,他们可以更轻松地扩展phing。
至于Drupal的开发和完善程度,我认为扩展phing并没有太大的价值,并且认为运行exec任务足以创建一个智能构建模板。
好吧,为了回答我的问题,我最终花了一些时间来找出网络钓鱼。它实际上是非常直观的,不需要花太长时间。