Phing DbDeploy

Posted on May 5, 2010

Detail of phing, please check here

Note: in the sql file set “–{space}//”. Otherwise the target won’t run successfully

Example build.xml (see below)
<?xml version=”1.0″ ?>
<project name=”Phing” basedir=”.” default=”init”>

<!– Sets the DSTAMP, TSTAMP and TODAY properties –>
<tstamp/>

<!– Load our configuration –>
<property file=”./build.properties” />

<target name=”init” description=”Init Function”>
<echo msg=”do nothing” />
</target>

<target name=”build” description=”Default Function”>

<property name=”build.dbinit.initfile” value=”${build.dir}/db/init/000_init_db.sql” />
<exec command=”${progs.mysql} -h ${db.host} -u ${db.user} –password=${db.pass} &lt; ${build.dbinit.initfile}”
dir=”"
checkreturn=”true” />

</target>

<!– create our migration task –>
<target name=”migrate” description=”Database Migrations”>

<!– load the dbdeploy task –>
<taskdef name=”dbdeploy” classname=”phing.tasks.ext.dbdeploy.DbDeployTask”/>

<!– these two filenames will contain the generated SQL to do the deploy and roll it back–>
<property name=”build.dbdeploy.deployfile” value=”deploy/scripts/deploy-${DSTAMP}${TSTAMP}.sql” />
<property name=”build.dbdeploy.undofile” value=”deploy/scripts/undo-${DSTAMP}${TSTAMP}.sql” />

<!– generate the deployment scripts –>
<dbdeploy
url=”mysql:host=${db.host};dbname=${db.name}”
userid=”${db.user}”
password=”${db.pass}”
dir=”${build.dir}/db/deltas”
outputfile=”${build.dir}/${build.dbdeploy.deployfile}”
undooutputfile=”${build.dir}/${build.dbdeploy.undofile}” />

<!– execute the SQL – Use mysql command line to avoid trouble with large files or many statements and PDO –>
<exec
command=”${progs.mysql} -h${db.host} -u${db.user} –password=${db.pass} ${db.name} &lt; ${build.dir}/${build.dbdeploy.deployfile}”
dir=”"
checkreturn=”true” />
</target>
</project>

Tags:

Categories: Programming


Comments are closed