Commit 7fa136ba authored by Benjamin Eberlei's avatar Benjamin Eberlei

Refactor build process

parent 0c336901
build.properties
build/ build/
logs/ logs/
reports/ reports/
......
; Project Name
project.name=DoctrineDBAL
; Build and Distribution directories
build.dir=build
dist.dir=dist
; Where the Pirum files should be stored to
project.pirum_dir=
; Where the generated download file should be pushed to
project.download_dir=
; Dependency minimum versions
dependencies.common=2.0.1
dependencies.sfconsole=2.0.0
; Version class and file
project.version_class = Doctrine\DBAL\Version
project.version_file = lib/Doctrine/DBAL/Version.php
version_name=2.0.2
stability=stable
build.dir=build
dist.dir=dist
report.dir=reports
project.pirum_dir=
project.download_dir=
log.archive.dir=logs
svn.path=/usr/bin/svn
test.phpunit_configuration_file=
test.phpunit_generate_coverage=0
test.pmd_reports=0
test.pdepend_exec=
test.phpmd_exec=
dependencies.common=2.0.1
dependencies.sfconsole=2.0.0
\ No newline at end of file
<?xml version="1.0"?> <?xml version="1.0"?>
<project name="DoctrineDBAL" default="build" basedir=".">
<!--
Doctrine 2 build file.
-->
<project name="Doctrine DBAL" default="build" basedir=".">
<taskdef classname="phing.tasks.ext.d51PearPkg2Task" name="d51pearpkg2" /> <taskdef classname="phing.tasks.ext.d51PearPkg2Task" name="d51pearpkg2" />
<property file="build.properties" /> <property file="build.properties" />
...@@ -54,7 +49,6 @@ ...@@ -54,7 +49,6 @@
<delete dir="${build.dir}" includeemptydirs="true" /> <delete dir="${build.dir}" includeemptydirs="true" />
<delete dir="${dist.dir}" includeemptydirs="true" /> <delete dir="${dist.dir}" includeemptydirs="true" />
<delete dir="${report.dir}" includeemptydirs="true" />
</target> </target>
<!-- <!--
...@@ -63,112 +57,75 @@ ...@@ -63,112 +57,75 @@
<target name="prepare" depends="clean"> <target name="prepare" depends="clean">
<echo msg="Creating build directory: ${build.dir}" /> <echo msg="Creating build directory: ${build.dir}" />
<mkdir dir="${build.dir}" /> <mkdir dir="${build.dir}" />
<mkdir dir="${build.dir}/logs"/>
<echo msg="Creating distribution directory: ${dist.dir}" /> <echo msg="Creating distribution directory: ${dist.dir}" />
<mkdir dir="${dist.dir}" /> <mkdir dir="${dist.dir}" />
<echo msg="Creating report directory: ${report.dir}" />
<mkdir dir="${report.dir}" /> <exec command="php -r &quot;include '${project.basedir}/${project.version_file}';echo ${project.version_class}::VERSION;&quot;" outputProperty="version" />
<mkdir dir="${build.dir}/logs"/> <exec command="php -r &quot;echo stripos('${version}', 'beta') ? 'beta' : stripos('${version}', 'alpha') ? 'alpha' : stripos('${version}', 'dev') ? 'devel' : 'stable';&quot;" outputProperty="pear.stability" />
<mkdir dir="${report.dir}/tests"/> <!-- Guessing the Stability for PEAR from the version -->
<exec command="php -r &quot;\$data = json_decode(file_get_contents('composer.json'), true); \$ret = (isset(\$data['version']) &amp;&amp; \$data['version'] != '${version}') ? 1 : 0;exit(\$ret);&quot;" checkreturn="true" passthru="true" />
<!-- We need an extra PEAR version, as pear versions dont allow dashes and need to be DEVEL not DEV" -->
<exec command="php -r &quot;echo strtolower(str_replace(array('-DEV', '-'), array('DEVEL', ''), '${version}'));&quot;" outputProperty="pear.version" />
<echo msg="Preparing release of version ${version} (${pear.version}+${pear.stability})" />
</target> </target>
<!-- <!--
Builds DBAL package, preparing it for distribution. Builds DBAL package, preparing it for distribution.
--> -->
<target name="build-dbal" depends="prepare"> <target name="copy-files" depends="prepare">
<exec command="grep '${version}' ${project.basedir}/lib/Doctrine/DBAL/Version.php" checkreturn="true"/> <echo msg="Checking for ${version} in ${project.version_file}" />
<copy todir="${build.dir}/doctrine-dbal"> <exec command="grep '${version}' ${project.basedir}/${project.version_file}" checkreturn="true"/>
<copy todir="${build.dir}/${project.name}-${version}">
<fileset refid="shared-artifacts"/> <fileset refid="shared-artifacts"/>
</copy> </copy>
<copy todir="${build.dir}/doctrine-dbal"> <copy todir="${build.dir}/${project.name}-${version}">
<fileset refid="common-sources"/> <fileset refid="common-sources"/>
<fileset refid="dbal-sources"/> <fileset refid="dbal-sources"/>
</copy> </copy>
<copy todir="${build.dir}/doctrine-dbal/Doctrine"> <copy todir="${build.dir}/${project.name}-${version}/Doctrine">
<fileset refid="symfony-sources"/> <fileset refid="symfony-sources"/>
</copy> </copy>
<copy todir="${build.dir}/doctrine-dbal/bin"> <copy todir="${build.dir}/${project.name}-${version}/bin">
<fileset refid="bin-scripts"/> <fileset refid="bin-scripts"/>
</copy> </copy>
<exec command="sed 's/${version}-DEV/${version}/' ${build.dir}/doctrine-dbal/Doctrine/DBAL/Version.php > ${build.dir}/doctrine-dbal/Doctrine/DBAL/Version2.php" passthru="true" />
<exec command="mv ${build.dir}/doctrine-dbal/Doctrine/DBAL/Version2.php ${build.dir}/doctrine-dbal/Doctrine/DBAL/Version.php" passthru="true" />
</target> </target>
<target name="build" depends="test,build-dbal"/> <target name="define-pear-package" depends="copy-files">
<d51pearpkg2 baseinstalldir="/" dir="${build.dir}/${project.name}-${version}">
<!-- <name>${project.name}</name>
Runs the full test suite. <summary>Doctrine Database Abstraction Layer</summary>
--> <channel>pear.doctrine-project.org</channel>
<target name="test" depends="prepare"> <description>The Doctrine DBAL package is the database abstraction layer used to power the ORM package.</description>
<if><equals arg1="${test.phpunit_generate_coverage}" arg2="1" /> <lead user="jwage" name="Jonathan H. Wage" email="jonwage@gmail.com" />
<then> <lead user="guilhermeblanco" name="Guilherme Blanco" email="guilhermeblanco@gmail.com" />
<property name="test.phpunit_coverage_option" value="--coverage-clover ${build.dir}/logs/clover.xml" /> <lead user="romanb" name="Roman Borschel" email="roman@code-factory.org" />
</then> <lead user="beberlei" name="Benjamin Eberlei" email="kontakt@beberlei.de" />
<else> <license>LGPL</license>
<property name="test.phpunit_coverage_option" value="" /> <version release="${pear.version}" api="${pear.version}" />
</else> <stability release="${pear.stability}" api="${pear.stability}" />
</if> <notes>-</notes>
<dependencies>
<if><equals arg1="${test.phpunit_configuration_file}" arg2="" /> <php minimum_version="5.3.2" />
<then> <pear minimum_version="1.6.0" recommended_version="1.6.1" />
<property name="test.phpunit_configuration_option" value="" /> <package name="DoctrineCommon" channel="pear.doctrine-project.org" minimum_version="${dependencies.common}" />
</then> <package name="Console" channel="pear.symfony.com" minimum_version="${dependencies.sfconsole}" />
<else> </dependencies>
<property name="test.phpunit_configuration_option" value="--configuration ${test.phpunit_configuration_file}" /> <dirroles key="bin">script</dirroles>
</else> <ignore>Doctrine/Common/</ignore>
</if> <ignore>Doctrine/Symfony/</ignore>
<release>
<exec command="phpunit ${test.phpunit_configuration_option} ${test.phpunit_coverage_option} --log-junit ../${build.dir}/logs/testsuites.xml Doctrine/Tests/AllTests.php" dir="./tests" />
<phpunitreport infile="${build.dir}/logs/testsuites.xml" format="frames" todir="${report.dir}/tests" />
<tstamp/>
<copy file="${build.dir}/logs/testsuites.xml" tofile="${log.archive.dir}/latest/log.xml" overwrite="true"/>
<if><equals arg1="${test.pmd_reports}" arg2="1" />
<then>
<exec command="${test.pdepend_exec} --jdepend-xml=${build.dir}/logs/jdepend.xml ./lib/Doctrine" />
<exec command="${test.phpmd_exec} ./lib/Doctrine xml codesize --reportfile ${build.dir}/logs/phpmd.xml" />
<copy file="${build.dir}/logs/jdepend.xml" tofile="${log.archive.dir}/latest/jdepend.xml" overwrite="true"/>
<copy file="${build.dir}/logs/phpmd.xml" tofile="${log.archive.dir}/latest/phpmd.xml" overwrite="true"/>
</then>
</if>
</target>
<!--
Builds distributable PEAR packages.
-->
<target name="build-packages" depends="build-dbal">
<d51pearpkg2 baseinstalldir="/" dir="${build.dir}/doctrine-dbal">
<name>DoctrineDBAL</name>
<summary>Doctrine Database Abstraction Layer</summary>
<channel>pear.doctrine-project.org</channel>
<description>The Doctrine DBAL package is the database abstraction layer used to power the ORM package.</description>
<lead user="jwage" name="Jonathan H. Wage" email="jonwage@gmail.com" />
<lead user="guilhermeblanco" name="Guilherme Blanco" email="guilhermeblanco@gmail.com" />
<lead user="romanb" name="Roman Borschel" email="roman@code-factory.org" />
<lead user="beberlei" name="Benjamin Eberlei" email="kontakt@beberlei.de" />
<license>LGPL</license>
<version release="${version}" api="${version}" />
<stability release="${stability}" api="${stability}" />
<notes>-</notes>
<dependencies>
<php minimum_version="5.3.2" />
<pear minimum_version="1.6.0" recommended_version="1.6.1" />
<package name="DoctrineCommon" channel="pear.doctrine-project.org" minimum_version="${dependencies.common}" />
<!-- Doctrine Symfony Console PEAR package is generated in ORM build.xml process -->
<package name="DoctrineSymfonyConsole" channel="pear.doctrine-project.org" minimum_version="${dependencies.sfconsole}" />
</dependencies>
<dirroles key="bin">script</dirroles>
<ignore>Doctrine/Common/</ignore>
<ignore>Doctrine/Symfony/</ignore>
<release>
<install as="doctrine-dbal" name="bin/doctrine-dbal" /> <install as="doctrine-dbal" name="bin/doctrine-dbal" />
<install as="doctrine-dbal.php" name="bin/doctrine-dbal.php" /> <install as="doctrine-dbal.php" name="bin/doctrine-dbal.php" />
</release> </release>
</d51pearpkg2> </d51pearpkg2>
<exec command="pear package" dir="${build.dir}/doctrine-dbal" passthru="true" /> </target>
<exec command="mv DoctrineDBAL-${version}.tgz ../../dist" dir="${build.dir}/doctrine-dbal" passthru="true" />
<tar destfile="dist/DoctrineDBAL-${version}-full.tar.gz" compression="gzip" basedir="${build.dir}"> <target name="generate-package">
<exec command="pear package" dir="${build.dir}/${project.name}-${version}" passthru="true" />
<echo msg="Moving ${project.name}-${pear.version}.tgz" />
<exec command="mv ${project.name}-${pear.version}.tgz ${project.basedir}/${dist.dir}/" dir="${build.dir}/${project.name}-${version}" passthru="true" checkreturn="true" />
<tar destfile="dist/${project.name}-${version}-full.tar.gz" compression="gzip" basedir="${build.dir}">
<fileset dir="${build.dir}"> <fileset dir="${build.dir}">
<include name="**/**" /> <include name="**/**" />
<exclude name="logs/" /> <exclude name="logs/" />
...@@ -176,28 +133,49 @@ ...@@ -176,28 +133,49 @@
</tar> </tar>
</target> </target>
<target name="git-tag">
<exec command="grep '${version}' ${project.basedir}/lib/Doctrine/DBAL/Version.php" checkreturn="true"/>
<exec command="git tag -a ${version}" passthru="true" />
</target>
<target name="pirum-release"> <target name="pirum-release">
<exec command="sudo pirum add ${project.pirum_dir} ${project.basedir}/dist/DoctrineDBAL-${version}.tgz" dir="." passthru="true" /> <exec command="sudo pirum add ${project.pirum_dir} ${dist.dir}/${project.name}-${version}.tgz" dir="." passthru="true" />
<exec command="sudo pirum build ${project.pirum_dir}" passthru="true" />
</target> </target>
<target name="distribute-download"> <target name="distribute-download">
<copy file="dist/DoctrineDBAL-${version}-full.tar.gz" todir="${project.download_dir}" /> <copy file="dist/${project.name}-${version}-full.tar.gz" todir="${project.download_dir}" />
</target> </target>
<target name="update-dev-version"> <target name="is-release-commit">
<exec command="grep '${version}' ${project.basedir}/lib/Doctrine/DBAL/Version.php" checkreturn="true"/> <echo msg="Checking for release commit.." />
<propertyprompt propertyName="next_version" defaultValue="${version}" promptText="Enter next version string (without -DEV)" /> <exec command="php -r &quot;exit((stripos('${version}', '-DEV') !== false) ? 1 : 0);&quot;" checkreturn="true" />
<exec command="sed 's/${version}-DEV/${next_version}-DEV/' ${project.basedir}/lib/Doctrine/DBAL/Version.php > ${project.basedir}/lib/Doctrine/DBAL/Version2.php" passthru="true" />
<exec command="mv ${project.basedir}/lib/Doctrine/DBAL/Version2.php ${project.basedir}/lib/Doctrine/DBAL/Version.php" passthru="true" />
<exec command="git add ${project.basedir}/lib/Doctrine/DBAL/Version.php" passthru="true" />
<exec command="git commit -m 'Bump Dev Version to ${next_version}'" passthru="true" />
</target> </target>
<target name="release" depends="git-tag,build-packages,distribute-download,pirum-release,update-dev-version" /> <target name="build" depends="define-pear-package,generate-package" />
<!-- Generate a release out of the current commit -->
<target name="release" depends="build,is-release-commit,distribute-download,pirum-release" />
<!-- Use this task to create a new release commit. -->
<target name="make-release-commit" depends="prepare">
<echo msg="Making a release commit of ${version}" />
<exec command="php -r &quot;exit((stripos('${version}', '-DEV') === false) ? 1 : 0);&quot;" checkreturn="true" />
<!-- verify version is correct -->
<exec command="grep '${version}' ${project.basedir}/${project.version_file}" checkreturn="true"/>
<!-- get default version just without -dev -->
<exec command="php -r &quot;echo str_replace('-DEV', '', '${version}');&quot;" outputProperty="next_version" />
<!-- prompt release master for new version number anyways -->
<propertyprompt propertyName="next_version" defaultValue="${next_version}" promptText="Enter next version string (without -DEV)" />
<!-- put new version into the code -->
<exec executable="perl">
<arg value="-pi" />
<arg value="-e" />
<arg value="s/${version}/${next_version}/g" />
<arg value="${project.basedir}/${project.version_file}" />
</exec>
<exec executable="perl">
<arg value="-pi" />
<arg value="-e" />
<arg value="s/&quot;library&quot;/&quot;library;&quot;&quot;version&quot;:&quot;${version}&quot;,/g" />
<arg value="composer.json" />
</exec>
<exec command="git add ${project.basedir}/${project.version_file} ${project.basedir}/composer.json" passthru="true" />
<exec command="git commit -m 'Release ${next_version}'" passthru="true" />
<exec command="git tag -m 'Tag ${next_version}'" passthru="true" />
</target>
</project> </project>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment