Phing DbDeploy
Posted on May 5, 2010Detail 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} < ${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} < ${build.dir}/${build.dbdeploy.deployfile}”
dir=”"
checkreturn=”true” />
</target>
</project>
Tags: phing
Categories: Programming