phing and drupal

Post on 08-May-2015

2.223 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Phing and Drupal First steps to contiuous integration

Vladimir Melnic

vladimir.melnic@wearepropeople.com

PHING

PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant. You can do anything with it that you could do with a traditional build system like GNU make, and its use of simple XML build files and extensible PHP "task" classes make it an easy-to-use and highly flexible build framework.

➔ http://www.phing.info/trac/

DRUPAL

Drupal is an open source content management platform powering millions of websites and applications. It’s built, used, and supported by an active and diverse community of people around the world.

➔ https://drupal.org/

Requirements

✔ pear channel-discover pear.phing.info✔ pear install phing/phing✔ https://drupal.org/project/phingdrushtask✔ pear install VersionControl_Git-0.4.4

➔ http://pear.php.net/package/VersionControl_Git/download

➔ https://drupal.org/project/phingdrushtask

Demo

➔ git@bitbucket.org:vladimir_m/soldanesti.org_make.git➔ cd soldanesti.org/ ➔ phing

➔ https://bitbucket.org/vladimir_m/soldanesti.org_make

Files:

● build.xml – main phing build file. ● contrib.make - Drush make file.● custom.make - Drush make file.● DrushTask.php - Phing Drush Task.● README.md – Readme file.● soldanesti.org – Cloned folder.

File::build.xml

<?xml version="1.0" encoding="UTF-8" ?>

<project name="soldanesti.org" default="build">

<target name="build"

depends="init, drush_core, drush_contrib, drush_custom, files_directory, create_settings.php"/>

</project>

File::build.xml(Target[init])<target name="init">

<taskdef name="drush" classname="DrushTask"/>

<php function="dirname" returnProperty="phing.dir">

<param value="${phing.file}"/>

</php>

<property name="project.basedir" value="${project.basedir}"/>

<property name="project.code.dir"

value="${project.basedir}/${phing.project.name}"/>

<property name="drupal.contrib.make.file" value="contrib.make"/>

<property name="drupal.custom.make.file" value="custom.make"/>

<property name="drupal.sites.dir"

value="${phing.project.name}/sites/all"/>

<property name="drupal.files.dir"

value="${phing.project.name}/sites/default/files"/>

<property name="drupal.settings.dir"

value="${phing.project.name}/sites/default"/>

</target>

File::build.xml(Target[drush_core])

<!-- Download drupal core. -->

<target name="drush_core" description="Download drupal core."

depends="init">

<drush command='dl drupal' assume="yes" pipe="true">

<option name="drupal-project-rename">${phing.project.name}</option>

</drush>

</target>

File::build.xml(Target[drush_contrib])

<!-- Execute drush make file and download contrib modules. -->

<target name="drush_contrib" description="Download drupal contrib modules."

depends="init">

<drush command="make" assume="yes" pipe="true">

<param>${drupal.contrib.make.file}</param>

<option name="contrib-destination">${drupal.sites.dir}</option>

<option name="no-core"/>

</drush>

</target>

File::build.xml(Target[files_directory])

<!-- Make files directory. -->

<target name="files_directory"

description="Create site/default/files directory."

depends="init">

<mkdir dir="${drupal.files.dir}"/>

<chmod file="${drupal.files.dir}" mode="0777" failonerror="true"/>

</target>

File::build.xml(Target[create_settings.php])

<!-- Manipulate settings.php file. -->

<target name="create_settings.php"

description="Copy default.settings.php file to settings.php."

depends="init">

<!--<echo msg="Copying default.settings.php file to settings.php..." />-->

<copy file="${drupal.settings.dir}/default.settings.php"

tofile="${drupal.settings.dir}/settings.php"/>

<chmod file="${drupal.settings.dir}/settings.php" mode="0777"

failonerror="true"/>

</target>

Demo::consoleLog()Buildfile: /var/www/soldanesti.org/build.xml

soldanesti.org > init:

[php] Calling PHP function: dirname()

soldanesti.org > drush_core:

[drush] standard

[drush] node

[drush] menu

[drush] blog

[drush] overlay

soldanesti.org > drush_contrib:

[drush] >> Project admin_menu contains 3 modules: ...

[drush] >> Project devel contains 3 modules: …

[drush] >> Project ctools contains 9 modules: …

soldanesti.org > drush_custom:

soldanesti.org > build:

BUILD FINISHED

Resources

➔ http://reload.github.io/phing-drupal-template/

➔ http://www.phing.info/docs/guide/trunk/chapters/GettingStarted.html

➔ https://drupal.org/project/phingdrushtask

➔ http://google.com

Thank You!Thank You!

➔ Skype: melnic-v

➔ Email: vladimir.melnic@wearepropeople.com

top related