Skip to content

Instantly share code, notes, and snippets.

@prakhar1989
Created September 9, 2014 14:15
Show Gist options
  • Save prakhar1989/1949047fc734839168db to your computer and use it in GitHub Desktop.
Save prakhar1989/1949047fc734839168db to your computer and use it in GitHub Desktop.
Build
<?xml version="1.0"?>
<project name="orange" description="Project Orange build file" default="help">
<property name="modules_dir" value="/" />
<property name="source.code" value="app/code/" />
<property name="source.design" value="app/design/" />
<property name="source.js" value="js/" />
<property name="source.skin" value="skin/" />
<property name="source.etc" value="app/etc/" />
<property name="source.holding" value="holding/" />
<property name="source.lib" value="lib/" />
<property name="source.locale" value="app/locale/" />
<property name="source.monitoring" value="monitoring/" />
<property name="source.var" value="var/" />
<property name="source.shell" value="shell/" />
<property name="source.mobile" value="mobile/" />
<property name="source.api" value="api/" />
<property name="source.api_v2" value="api_v2/" />
<property name="source.sap_feeds" value="sap_feeds/" />
<property name="monitoring_dir" value="monitoring/" />
<property name="environment" value="local" />
<property name="prefix" value="" />
<property name="target.rpm" value="/usr/src/redhat/" />
<property name="target.config" value="${config_dir}" />
<property name="target.code" value="${target.base}app/code/" />
<property name="target.design" value="${target.base}app/design/" />
<property name="target.locale" value="${target.base}app/locale/" />
<property name="target.etc" value="${target.base}app/etc/" />
<property name="target.skin" value="${target.base}skin/" />
<property name="target.lib" value="${target.base}lib/" />
<property name="target.js" value="${target.base}js/" />
<property name="target.shell" value="${target.base}shell/" />
<property name="target.monitoring" value="${target.base}sysmonitoring/" />
<property name="target.holding" value="${target.base}holding/" />
<property name="target.var" value="${target.base}var/" />
<property name="target.mobile" value="${target.base}mobile/" />
<property name="target.api" value="${target.base}api/" />
<property name="target.api_v2" value="${target.base}api_v2/" />
<property name="target.sap_feeds" value="${target.base}sap_feeds/" />
<property name="target.sitecheckfrontend" value="${target.base}app/design/frontend/orange/default/template/cms/" />
<property name="target.sitecheckbackend" value="${target.base}app/design/adminhtml/default/default/template/cms" />
<property name="target.user" value="site" />
<property name="sales_output" value="/tmp/sales.csv" />
<property name="mailto.errors" value="[email protected]" />
<property name="target.group" value="apache" />
<fileset dir="." id="prepend">
<include name="prepend.php" />
</fileset>
<!-- Sets the DSTAMP, TSTAMP and TODAY properties for dbdeploy target -->
<tstamp/>
<property file="${environment}.properties" />
<property name="memcached1" value="x.p.w2" override="false" />
<property name="memcached2" value="x.p.w4" override="false" />
<property name="memcached3" value="x.p.w5" override="false" />
<fileset dir="." id="holding">
<include name="maintenance/*" />
</fileset>
<if>
<available file="local.xml.${environment}.template" />
<then>
<property name="config_template" value="local.xml.${environment}.template" />
</then>
<else>
<property name="config_template" value="local.xml.template" />
</else>
</if>
<if>
<available file="robots.${environment}.template.txt" />
<then>
<property name="robots_config_template" value="robots.${environment}.template.txt" />
</then>
<else>
<property name="robots_config_template" value="robots.template.txt" />
</else>
</if>
<target name="prepare" description="Deletes old directories, creates new" >
<echo msg="Removing old files and directories..." />
<if>
<available file="${prefix}${target.code}" type="dir"/>
<then>
<delete includeemptydirs="true" verbose="true" failonerror="true">
<fileset dir="${prefix}${target.code}">
<include name="community/**" />
<include name="local/**" />
<exclude name="community/Phoenix/**" />
<exclude name="community/Find/**" />
</fileset>
<fileset dir="${prefix}${target.var}">
<include name="**" />
</fileset>
</delete>
</then>
</if>
<!-- TODO: remove design and xmls too -->
</target>
<target name="config" description="Makes magento config">
<echo msg="Prepare config..." />
<copy tofile="${prefix}${target.etc}/local.xml" file="${config_template}" overwrite="true">
<filterchain>
<filterreader classname="phing.ReplaceRegexpIf">
<param type="regexp">
<param name="property" value="memcached1"/>
<param name="negative" value="true"/>
<param name="pattern" value="\n\s*&lt;server1&gt;.*&lt;/server1&gt;"/>
<param name="replace" value=""/>
<param name="ignoreCase" value="true"/>
<param name="multiline" value="true"/>
</param>
</filterreader>
<filterreader classname="phing.ReplaceRegexpIf">
<param type="regexp">
<param name="property" value="memcached2"/>
<param name="negative" value="true"/>
<param name="pattern" value="\n\s*&lt;server2&gt;.*&lt;/server2&gt;"/>
<param name="replace" value=""/>
<param name="ignoreCase" value="true"/>
<param name="multiline" value="true"/>
</param>
</filterreader>
<filterreader classname="phing.ReplaceRegexpIf">
<param type="regexp">
<param name="property" value="memcached3"/>
<param name="negative" value="true"/>
<param name="pattern" value="\n\s*&lt;server3&gt;.*&lt;/server3&gt;"/>
<param name="replace" value=""/>
<param name="ignoreCase" value="true"/>
<param name="multiline" value="true"/>
</param>
</filterreader>
<replacetokens begintoken="{{" endtoken="}}">
<token key="secure_base_url" value="${base_url.secure}"/>
<token key="unsecure_base_url" value="${base_url.unsecure}"/>
<token key="db_host" value="${db.host}"/>
<token key="db_slave_host" value="${db.slave_host}"/>
<token key="db_user" value="${db.user}"/>
<token key="db_name" value="${db.name}"/>
<token key="db_pass" value="${db.pass}"/>
<token key="db_read_host" value="${db_read.host}"/>
<token key="db_read_user" value="${db_read.user}"/>
<token key="db_read_name" value="${db_read.name}"/>
<token key="db_read_pass" value="${db_read.pass}"/>
<token key="media_root" value="${media_dir}"/>
<token key="artifact_host" value="${db.artifact.host}"/>
<token key="artifact_user" value="${db.artifact.user}"/>
<token key="artifact_pass" value="${db.artifact.pass}"/>
<token key="artifact_name" value="${db.artifact.name}"/>
<token key="memcached1" value="${memcached1}" />
<token key="memcached2" value="${memcached2}" />
<token key="memcached3" value="${memcached3}" />
</replacetokens>
</filterchain>
</copy>
<exec command="id -u" outputProperty="uid" />
<if>
<and>
<equals arg1="0" arg2="${uid}" />
<isset property="target.group" />
<istrue value="${target.group}" />
</and>
<then>
<chown file="${prefix}${target.etc}/local.xml" group="${target.group}" />
<if>
<istrue value="${monitoring}" />
<then>
<chown file="${prefix}${target.monitoring}/settings.ini" group="${target.group}" />
</then>
</if>
</then>
</if>
<exec dir="${target.base}" command="ln -s ${media_dir}sitemap sitemap " />
<exec dir="${target.base}" command="chgrp ${target.group} -R ${target.base}/" />
<exec dir="${target.base}" command="chmod 755 -R ${target.base}/" />
<exec dir="${target.base}" command="rm -rf ${target.base}/media" />
<exec dir="${target.base}" command="chmod 777 -R ${target.base}/var" />
<exec dir="${target.base}" command="rm -f .htaccess" />
<exec dir="${target.base}" command="rm -f .htaccess.sample" />
</target>
<target name="deploy" description="Copies files to the target directory" depends="prepare">
<echo msg="Copying code..." />
<copy todir="${prefix}${target.code}" overwrite="true">
<fileset dir="${source.code}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.holding}" overwrite="true">
<fileset dir="${source.holding}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.etc}" overwrite="true">
<fileset dir="${source.etc}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.design}" overwrite="true">
<fileset dir="${source.design}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.js}" overwrite="true">
<fileset dir="${source.js}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.skin}" overwrite="true">
<fileset dir="${source.skin}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.lib}" overwrite="true">
<fileset dir="${source.lib}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.locale}" overwrite="true">
<fileset dir="${source.locale}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.monitoring}" overwrite="true">
<fileset dir="${source.monitoring}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.var}" overwrite="true">
<fileset dir="${source.var}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.shell}" overwrite="true">
<fileset dir="${source.shell}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.mobile}" overwrite="true">
<fileset dir="${source.mobile}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.api}" overwrite="true">
<fileset dir="${source.api}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.api_v2}" overwrite="true">
<fileset dir="${source.api_v2}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.sap_feeds}" overwrite="true">
<fileset dir="${source.sap_feeds}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.base}" overwrite="true">
<fileset dir="." defaultexcludes="${exclude_svn_update}">
<include name="google2a83b030f69cb8c1.html" />
<include name="google4f0983522c789772.html" />
<include name="google5cacdc42831cc716.html" />
<include name="googlec95d990304a413a5.html" />
<!--<include name="robots.txt" />-->
<include name="mobile_cookie.php" />
<include name="api.php" />
<include name="appcheckout.php" />
<include name="index.php" />
<include name="Artifact.php" />
<include name="product_info.php" />
<include name="assign_attribute.php" />
<include name="allProducts.php" />
<include name="appOrdersReport.php" />
<include name="ewarranty_el.php" />
<include name="master-products-import.php" />
<include name="sap_delta_price_reader.php" />
<include name="bundleStockStatusUpdate.php" />
</fileset>
</copy>
<copy todir="${prefix}${target.base}" overwrite="true">
<fileset refid="prepend" />
<filterchain>
<replacetokens begintoken="{{" endtoken="}}">
<token key="version" value="${version}-${release}" />
</replacetokens>
</filterchain>
</copy>
<copy todir="${prefix}${target.sitecheckfrontend}" overwrite="true">
<fileset dir="${site_check_file_path}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy todir="${prefix}${target.sitecheckbackend}" overwrite="true">
<fileset dir="${site_check_file_path}" defaultexcludes="${exclude_svn_update}">
<include name="**" />
</fileset>
</copy>
<copy tofile="${prefix}${target.base}/robots.txt" file="${robots_config_template}" overwrite="true"/>
<phingcall target="config" />
</target>
<target name='full_deploy' description = 'Deploy complete release'>
<phingcall target="copy_magento" />
<phingcall target="deploy" />
</target>
<target name="copy_magento" description="Get Magento into the target directory">
<echo msg="Copying Magento files..." />
<copy todir="${prefix}${target.base}">
<fileset dir="${magento_dir}">
<include name="**" />
</fileset>
</copy>
<!--<echo msg="Copying .htaccess..." />
<copy tofile="${prefix}${target.base}/.htaccess" file=".htaccess.sample" overwrite="true"/>-->
<echo msg="Changing Magento permissions..." />
<chmod mode="0775" verbose="true">
<fileset dir="${prefix}${target.base}">
<!--<include name="var/**" />-->
<include name="media/**" />
<include name="app/etc" />
<type type="dir" />
</fileset>
</chmod>
</target>
<!-- create our migration task -->
<target name="migrate" description="Database Migrations">
<!-- load the dbdeploy task -->
<taskdef name="dbdeployplus" classname="phing.DbDeployPlusTask"/>
<!-- these two filenames will contain the generated SQL to do the deploy and roll it back-->
<property name="build.dbdeploy.deployfile" value="deploy-${DSTAMP}${TSTAMP}.sql" />
<property name="build.dbdeploy.undofile" value="undo-${DSTAMP}${TSTAMP}.sql" />
<!-- generate the deployment scripts -->
<dbdeployplus
url="mysql:host=${db.host};dbname=${db.name}"
userid="${db.user}"
password="${db.pass}"
dir="${modules_dir}/migrations"
outputfile="${modules_dir}/migrations/${build.dbdeploy.deployfile}"
undooutputfile="${modules_dir}/migrations/${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} -v -h${db.host} -u${db.user} -p'${db.pass}' ${db.name} &lt; ${build.dbdeploy.deployfile}"
dir="${modules_dir}/migrations" checkreturn="true" passthru="true" />
</target>
<target name="cache" description="Clean magento cache">
<available file="magetool.ini" property="mageexists" value="true" />
<if>
<and>
<isset property="target.home" />
<isset property="mageexists" />
</and>
<then>
<echo msg="Clean mage cache..." />
<exec dir="${target.base}" command="ZF_CONFIG_FILE=${target.home}magetool.ini zf flush mage-core-cache" />
</then>
</if>
</target>
</project>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment