Drush tasks running in Jenkins


A Drush task for Phing. This task enable usage of Drush commands in Phing build scripts.

Phing provides tools for usual tasks for PHP projects (phplint, jslint, VCS checkouts, files copy or merge, packaging, upload, etc.). Integration of Drush in Phing is particularly useful when building and testing Drupal projects in a continuous integration server such as Jenkins, Travis or Continuous PHP.


As this project is not meant to be a Drupal module but more likely a library, we won't follow the Drupal standard versionning but the Semantic one. This way, the library is easy to install with Composer.
The current stable version is: 1.1.1

Old branches of the project can still be found in the repository.


Installation must be done through Composer:

composer require drupal/phingdrushtask

or by editing your composer.json file and add in the right section:

  "require": {
    "drupal/phingdrushtask": "^1.1"
  "repositories": [
      "type": "vcs",
      "url": "https://git.drupal.org/project/phingdrushtask.git"

Note: once the Drupal package repository will be working properly, the repositories section where you define the vcs will be useless, but for now, it's mandatory.


To use the Drush task in your build file, it must be made available to Phing so that the buildfile parser is aware a correlating XML element and it's parameters. Import this file and the task <drush/> will be loaded and usable:

<import file="./vendor/drupal/phingdrushtask/import.xml" />

Base Drush options are mapped to attributes of the Drush task. Parameters are wrapped in elements. Value of a parameter is defined by the text child of the element. Options are mapped to elements with a name attribute. Value of an option can either be in the value attribute of the element or as text child (like params).

The Drush command for installing Drupal:

drush site-install --yes --locale=uk --site-name =${sitename} expert

... would be written in a Phing build file as:

<drush command="site-install" assume="yes">
  <option name="locale">uk</option>
  <option name="site-name" value="${sitename}" />

You may also use Phing properties to configure Drush...

<property name="drush.assume" value="yes"/>

<drush command="site-install">
  <option name="locale">uk</option>
  <option name="site-name" value="${sitename}" />

It's also possible to add the attributes escape and/or quote in the <param> tag.

<propery name="drush.assume" value="yes"/>
<propery name="drush.root" value="${website.drupal.dir}"/>

<drush command="site-install">
    <option name="db-url" value="${drupal.db.url}"/>
    <option name="site-name" value="${website.site.name}"/>
    <option name="account-name" value="${drupal.admin.username}"/>
    <option name="account-pass" value="${drupal.admin.password}"/>
    <option name="account-mail" value="${drupal.admin.email}"/>
    <!-- Disable sending of e-mails during installation. -->
    <param escape="no" quote="yes">install_configure_form.update_status_module='array(FALSE,FALSE)'</param>

More sample usages are provided in the template build script at [reload.github.io/phing-drupal-template](https://reload.github.io/phing-drupal-template/).

Automated tests

Code is tested in Travis CI: https://travis-ci.org/drupol/phingdrushtask

Supporting organizations: 
Co Maintainance

Project Information