| <!--/******************************************************************************* |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 |
| * which accompanies this distribution. |
| * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html |
| * and the Eclipse Distribution License is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * Ant naming conventions: |
| * - regardless of the actual OS platform,'/' is the directory separator |
| * (Ant will convert as appropriate). |
| * - multi-word properties use periods '.' |
| * - multi-word targets use hyphens '-' |
| * - multi-word macros use underscores '_' |
| * - multi-word macro attributes are concatinated |
| * e.g. 'runpathref' |
| * - multi-word tasks (taskdef) names are concatinated |
| * e.g. 'validateconnection' |
| * - OS environment variables are in ALLCAPS and have 'env' as a prefix |
| * e.g. ${env.XXX}. |
| * - Ant properties are lower case. |
| * |
| * Contributors: |
| * eric.gwin - initial API and implementation (checked in by Tware) |
| #******************************************************************************/--> |
| |
| <!-- ============================================================================= |
| * General Comments |
| * This buildfile contains branch specific instructions for the automated build |
| * process for EclipseLink and is intended to be called by the generic |
| * "bootstrap.xml" which is called by bootstrap.sh. |
| * Autobuild contains targets to generate and test continuous and nightly |
| * snapshot, monthly and Release milestone builds, with the associated |
| * Delivery steps (uploading files and test results to the download |
| * server, interfacing with the "uploadToMaven" script, tagging source, |
| * etc. It is not intended to be executed directly, nor does it directly |
| * build or package EclipseLink. It is designed to be run on the Eclipse |
| * Build Server (an IBM PowerPC running Linux) |
| *================================================================================= --> |
| <project name="EclipseLink Automated Build" basedir="." default="build-nightly"> |
| <echo message="---- AutoBuild.xml ----"/> |
| |
| <target name="build-no-publish" description="Trigger an automated build without testing or publish" |
| depends="clean, build" |
| /> |
| <target name="build-nightly" description="Trigger the nightly automated build and lrg tests" |
| depends="clean, build, test-lrg, publish-build, publish-results, test-for-errors" |
| /> |
| <target name="build-milestone" description="Trigger build, testing, and publishing of a milestone release ('release' is a milestone in this case)" |
| depends="promote-init, gen-build-for-maven, publish-milestone, create-tag" |
| /> |
| <target name="build-continuous" description="Trigger an automated build and run the tests if source changes exist" |
| depends="clean, build-no-javadoc, build-utils, test-srg" |
| /> |
| <target name="publish-all" description="Trigger just the publish targets" |
| depends="init, publish-build, publish-results" |
| /> |
| |
| <!-- script to "cleanup" the revision information --> |
| <scriptdef name="cleanRevision" language="javascript" manager="javax"> |
| <attribute name="input"/> |
| <attribute name="property"/> |
| <![CDATA[ |
| // getting the value |
| input = attributes.get("input"); |
| property = attributes.get("property"); |
| if (input == null || property == null) { |
| self.fail("both 'input' and 'property' attributes must be set."); |
| } |
| if (input.startsWith("${") || input == "" ) { |
| // Set the result of an undefined (unexpanded) or "empty string" variable to 'NA' |
| project.setProperty(attributes.get("property"), "NA"); |
| } |
| else { |
| // Last changed revision (branch specific) is stored 2nd to last line of |
| // "svn info --revision HEAD <url>" output |
| // Get "endString" Index based on search for last instance of "Last Changed" |
| endLastRev = input.lastIndexOf("Last Changed"); |
| // Get "beginString" index based upon the last space in the line above the endString index |
| beginLastRev = input.lastIndexOf(" ", endLastRev); |
| // Trim the string to not include the leading space, or the end-of-line |
| trimmedInput = input.substring(beginLastRev+1, endLastRev-1); |
| project.setProperty(attributes.get("property"), trimmedInput); |
| } |
| ]]> |
| </scriptdef> |
| |
| <target name="init" depends="pre-init, common-init"/> |
| <target name="pre-init"> |
| <tstamp> |
| <format property="build.date" pattern="yyyyMMdd"/> |
| <format property="build.time" pattern="HHmm"/> |
| </tstamp> |
| <!-- # The next properties defines are pulled out of the properties file --> |
| <!-- # to highlight them. --> |
| <!-- # test.properties.run - defines which file to use to connect to the --> |
| <!-- # db for post-build testing. --> |
| <!-- # coretest.prop.file - the file generated by the build, that holds --> |
| <!-- # the db properties for automated testing --> |
| <property name="coretest.prop.file" value="${log.dir}/mysql.jpa.test.properties"/> |
| <property name="test.properties.run" value="${coretest.prop.file}"/> |
| |
| <!-- get svn.revision NOTE: if get fails defaulted to "NA" --> |
| <exec outputproperty="svn.revision" |
| failonerror="false" |
| failifexecutionfails="false" |
| errorproperty="svnversion.failed" |
| logError="true" |
| executable="${svn.exec}"> |
| <arg value="info"/> |
| <arg value="--revision"/> |
| <arg value="HEAD"/> |
| <arg value="${svn.branch.url}"/> |
| </exec> |
| <cleanRevision input="${svn.revision}" property="svn.revision"/> |
| <property name="svn.revision" value="NA"/> |
| |
| <!-- build.type should default to "SNAPSHOT, unless it is set to "M#" --> |
| <!-- or "RELEASE" on the command-line for milestone or release builds --> |
| <property name="build.type" value="SNAPSHOT"/> |
| |
| <!-- Set version.qualifier appropriately. variable should only be used --> |
| <!-- for uploaded filenames or manifest entries. --> |
| <condition property="version.qualifier" value="qualifier" |
| else="v${build.date}-r${svn.revision}"> |
| <equals arg1="${svn.revision}" arg2="NA"/> |
| </condition> |
| </target> |
| |
| <target name="common-init"> |
| <property file="${basedir}/autobuild.properties"/> |
| |
| <!-- Set version.string appropriately. variable should only be used for --> |
| <!-- uploaded filenames or manifest entries. --> |
| <property name="version.string" value="${release.version}.${version.qualifier}"/> |
| |
| <!-- Set download.path appropriately depending upon build target --> |
| <condition property="download.path" value="${eclipselink.download.path}/nightly/${release.version}/${build.date}"> |
| <equals arg1="${build.type}" arg2="SNAPSHOT"/> |
| </condition> |
| <condition property="download.path" value="${eclipselink.download.path}/releases/${release.version}"> |
| <equals arg1="${build.type}" arg2="RELEASE"/> |
| </condition> |
| <property name="download.path" value="${eclipselink.download.path}/milestones/${release.version}/${build.type}"/> |
| |
| <!-- generate Release Designation string for manifest --> |
| <property name="release.designation" value="EclipseLink ${release.version}"/> |
| |
| <!-- generate string for tag creation (only used if milestone, or release build) --> |
| <condition property="milestone.tag" value="${release.version}"> |
| <equals arg1="${build.type}" arg2="RELEASE"/> |
| </condition> |
| <property name="milestone.tag" value="${release.version}-${build.type}"/> |
| |
| <!-- Now that all our overrides are complete, pull in the rest of the build properties --> |
| <property file="${build.root.dir}/build.properties"/> |
| |
| <echo message="ANT_ARGS='${env.ANT_ARGS}'"/> |
| <echo message="ANT_OPTS='${env.ANT_OPTS}'"/> |
| <echo message=" "/> |
| <echo message="env.JAVA_HOME = '${env.JAVA_HOME}'"/> |
| <echo message="env.ANT_HOME = '${env.ANT_HOME}'"/> |
| <echo message="env.JUNIT_HOME = '${env.JUNIT_HOME}'"/> |
| <echo message="env.MAVENANT_DIR= '${env.MAVENANT_DIR}'"/> |
| <echo message="env.PATH = '${env.PATH}'"/> |
| <echo message="env.CLASSPATH = '${env.CLASSPATH}'"/> |
| <echo message="env.SVN_EXEC = '${env.SVN_EXEC}'"/> |
| <echo message="env.TARGET = '${env.TARGET}'"/> |
| <echo message=" "/> |
| <echo message="builddate.buildtime='${build.date}.${build.time}'"/> |
| <echo message="java.version ='${java.version}'"/> |
| <echo message="os.name ='${os.name}'"/> |
| <echo message="os.arch ='${os.arch}'"/> |
| <echo message="os.version ='${os.version}'"/> |
| <echo message=" "/> |
| <echo message="branch.name = '${branch.name}'"/> |
| <echo message="basedir ='${basedir}'"/> |
| <echo message="build.deps.dir='${build.deps.dir}'"/> |
| <echo message="build.root.dir='${build.root.dir}'"/> |
| <echo message="log.dir ='${log.dir}'"/> |
| <echo message="junit.dir ='${junit.dir}'"/> |
| <echo message="junit.lib ='${junit.lib}'"/> |
| <echo message=" "/> |
| <echo message="EL version ='${release.version}'"/> |
| <echo message="build.type ='${build.type}'"/> |
| <echo message="version.string ='${version.string}'"/> |
| <echo message="build.number ='${build.date}'"/> |
| <echo message="svn.revision ='${svn.revision}'"/> |
| </target> |
| |
| <target name="clean" depends="init"> |
| <ant antfile="build.xml" dir="${build.root.dir}" target="clean"/> |
| </target> |
| |
| <target name="clean-dependencies" depends="init"> |
| <!-- Removed full delete of source tree because build-clean should take care |
| of old build artifacts, and "svn co" should update source (including |
| updating revision numbers, and cleaning up files that were renamed or |
| deleted in the repos). --> |
| <delete dir="${junit.dir}"/> |
| <delete dir="${build.deps.dir}/mail"/> |
| <delete dir="${build.deps.dir}/mavenant"/> |
| <delete file="${build.deps.dir}/dependencies.txt"/> |
| <delete file="${build.deps.dir}/junit.zip"/> |
| </target> |
| |
| <target name="check-4-junit"> |
| <echo message="Looking for: ${junit.dir}/junit.jar"/> |
| <available file="${junit.dir}/junit.jar" type="file" property="junit-exist"/> |
| <echo message="junit-exist: ${junit-exist}"/> |
| </target> |
| <target name="get-junit" unless="junit-exist" depends="check-4-junit"> |
| <mkdir dir="${junit.dir}"/> |
| |
| <!-- Get junit, extract it, then copy to expected location and cleanup (flatten won't work) --> |
| <get src="${junit.url}" dest="${build.deps.dir}/junit.zip"/> |
| <unzip src="${build.deps.dir}/junit.zip" dest="${build.deps.dir}"/> |
| <copy file="${build.deps.dir}/${junit.bundle}/junit.jar" todir="${junit.dir}"/> |
| <delete dir="${build.deps.dir}/${junit.bundle}"/> |
| <property name="dependencies-downloaded" value="true"/> |
| </target> |
| |
| <target name="check-4-mail"> |
| <echo message="Looking for: ${build.deps.dir}/mail/mail.jar"/> |
| <available file="${build.deps.dir}/mail/mail.jar" type="file" property="mail-exist"/> |
| <echo message="mail-exist: ${mail-exist}"/> |
| </target> |
| <target name="get-mail" unless="mail-exist" depends="check-4-mail"> |
| <mkdir dir="${build.deps.dir}/mail"/> |
| <get src="${mail.url}" dest="${build.deps.dir}/mail/mail.jar"/> |
| <property name="dependencies-downloaded" value="true"/> |
| </target> |
| |
| <target name="check-4-activation"> |
| <echo message="Looking for: ${build.deps.dir}/mail/activation.jar"/> |
| <available file="${build.deps.dir}/mail/activation.jar" type="file" property="activation-exist"/> |
| <echo message="activation-exist: ${activation-exist}"/> |
| </target> |
| <target name="get-activation" unless="activation-exist" depends="check-4-activation"> |
| <get src="${activation.url}" dest="${build.deps.dir}/mail/activation.jar"/> |
| <property name="dependencies-downloaded" value="true"/> |
| </target> |
| |
| <target name="check-4-mavenant"> |
| <echo message="Looking for: ${build.deps.dir}/mavenant/maven-ant-tasks-2.0.8.jar"/> |
| <available file="${build.deps.dir}/mavenant/maven-ant-tasks-2.0.8.jar" type="file" property="mavenant-exist"/> |
| <echo message="mavenant-exist: ${mavenant-exist}"/> |
| </target> |
| <target name="get-mavenant" unless="mavenant-exist" depends="check-4-mavenant"> |
| <!-- Commented out download, because it seems the access to apache.org has been blocked --> |
| <!-- mkdir dir="${build.deps.dir}/mavenant"/ --> |
| <!-- get src="${mavenant.url}" dest="${build.deps.dir}/mavenant/maven-ant-tasks-2.0.8.jar"/ --> |
| <!-- property name="dependencies-downloaded" value="true"/ --> |
| <fail message="Must manually create dependency. Build cannot find: ${build.deps.dir}/mavenant/maven-ant-tasks-2.0.8.jar"/> |
| </target> |
| |
| <target name="get-dependencies" if="dependencies-downloaded" depends="get-junit, get-mail, get-activation, get-mavenant"> |
| <delete file="${build.deps.dir}/dependencies.txt" failonerror="true"/> |
| |
| <!-- Generate "dependencies.txt" file --> |
| <echo message="Buildsystem external dependencies come from:${line.separator}" file="${build.deps.dir}/dependencies.txt" append="false"/> |
| <echo message="junit: ${junit.url}${line.separator}" file="${build.deps.dir}/dependencies.txt" append="true"/> |
| <echo message="activation: ${activation.url}${line.separator}" file="${build.deps.dir}/dependencies.txt" append="true"/> |
| <echo message="mail: ${mail.url}${line.separator}" file="${build.deps.dir}/dependencies.txt" append="true"/> |
| <echo message="mavenant: ${mavenant.url}${line.separator}" file="${build.deps.dir}/dependencies.txt" append="true"/> |
| </target> |
| |
| <target name="build" depends="get-dependencies"> |
| <ant antfile="build.xml" dir="${build.root.dir}" target="build-distribution"/> |
| </target> |
| |
| <target name="build-no-javadoc" depends="get-dependencies"> |
| <ant antfile="build.xml" dir="${build.root.dir}" target="build"/> |
| </target> |
| |
| <target name="build-utils" depends="get-dependencies"> |
| <ant antfile="build.xml" dir="${build.root.dir}" target="build-util"/> |
| </target> |
| |
| <target name="build-test" depends="get-dependencies"> |
| <!-- Builds all tests including MW tests (needed for nightly compile verification even if they aren't run) --> |
| <ant antfile="build.xml" dir="${build.root.dir}" target="build-test"/> |
| </target> |
| |
| <target name="build-core-test" depends="get-dependencies"> |
| <ant antfile="build.xml" dir="${build.root.dir}" target="build-core-test"/> |
| </target> |
| |
| <target name="test-srg"> |
| <!-- Generate Test properties file --> |
| <echo message="# Generated db connection properties (by bootstrap.xml)${line.separator}" file="${coretest.prop.file}" append="false"/> |
| <echo message="jdbc.driver.jar=${jdbc.driver.jar}${line.separator}" file="${coretest.prop.file}" append="true"/> |
| <echo message="db.driver=${db.driver}${line.separator}" file="${coretest.prop.file}" append="true"/> |
| <echo message="db.url=${db.url}${line.separator}" file="${coretest.prop.file}" append="true"/> |
| <echo message="db.user=${db.user}${line.separator}" file="${coretest.prop.file}" append="true"/> |
| <echo message="db.pwd=${db.pwd}${line.separator}" file="${coretest.prop.file}" append="true"/> |
| <echo message="db.platform=${db.platform}${line.separator}" file="${coretest.prop.file}" append="true"/> |
| |
| <ant antfile="build.xml" dir="${build.root.dir}" target="test-srg"> |
| <property name="eclipselink.logging.level" value="${test.logging.level}"/> |
| </ant> |
| <!-- delete file="${coretest.prop.file}"/ --> |
| </target> |
| |
| <target name="test-lrg"> |
| <!-- Generate Test properties file --> |
| <echo message="# Generated db connection properties (by bootstrap.xml)${line.separator}" file="${coretest.prop.file}" append="false"/> |
| <echo message="jdbc.driver.jar=${jdbc.driver.jar}${line.separator}" file="${coretest.prop.file}" append="true"/> |
| <echo message="db.driver=${db.driver}${line.separator}" file="${coretest.prop.file}" append="true"/> |
| <echo message="db.url=${db.url}${line.separator}" file="${coretest.prop.file}" append="true"/> |
| <echo message="db.user=${db.user}${line.separator}" file="${coretest.prop.file}" append="true"/> |
| <echo message="db.pwd=${db.pwd}${line.separator}" file="${coretest.prop.file}" append="true"/> |
| <echo message="db.platform=${db.platform}${line.separator}" file="${coretest.prop.file}" append="true"/> |
| |
| <ant antfile="build.xml" dir="${build.root.dir}" target="test-lrg"> |
| <property name="eclipselink.logging.level" value="${test.logging.level}"/> |
| </ant> |
| <!-- delete file="${coretest.prop.file}"/ --> |
| </target> |
| |
| <target name="test-browser" depends="init"> |
| <echo message="db.platform=${db.platform}${line.separator}" file="${coretest.prop.file}" append="true"/> |
| |
| <ant antfile="build.xml" dir="${build.root.dir}" target="test-browser"> |
| <property name="eclipselink.logging.level" value="${test.logging.level}"/> |
| </ant> |
| </target> |
| |
| <target name="publish-build"> |
| <!-- New Publish Architecture --> |
| <mkdir dir="${download.path}"/> |
| <copy file="${build.root.dir}/${eclipselink.install.prefix}${eclipselink.zip.suffix}" tofile="${download.path}/${eclipselink.install.prefix}-${version.string}${eclipselink.zip.suffix}" failonerror="false"/> |
| <copy file="${build.root.dir}/${eclipselink.src.install.prefix}${eclipselink.zip.suffix}" tofile="${download.path}/${eclipselink.src.install.prefix}-${version.string}${eclipselink.zip.suffix}" failonerror="false"/> |
| <copy file="${build.root.dir}/${eclipselink.tst.src.prefix}${eclipselink.zip.suffix}" tofile="${download.path}/${eclipselink.tst.src.prefix}-${version.string}${eclipselink.zip.suffix}" failonerror="false"/> |
| <copy file="${build.root.dir}/${eclipselink.plugins.install.prefix}${eclipselink.zip.suffix}" tofile="${download.path}/${eclipselink.plugins.install.prefix}-${version.string}${eclipselink.zip.suffix}" failonerror="false"/> |
| <copy file="${build.root.dir}/${eclipselink.core.test}/${report.dir}/junit-noframes.html" tofile="${download.path}/eclipselink-core-lrg-${version.string}.html" failonerror="false"/> |
| <copy file="${build.root.dir}/${eclipselink.jpa.test}/${report.dir}/junit-noframes.html" tofile="${download.path}/eclipselink-jpa-lrg-${version.string}.html" failonerror="false"/> |
| <copy file="${build.root.dir}/${eclipselink.moxy.test}/${report.dir}/jaxb/junit-noframes.html" tofile="${download.path}/eclipselink-jaxb-lrg-${version.string}.html" failonerror="false"/> |
| <copy file="${build.root.dir}/${eclipselink.moxy.test}/${report.dir}/oxm/junit-noframes.html" tofile="${download.path}/eclipselink-oxm-lrg-${version.string}.html" failonerror="false"/> |
| <copy file="${build.root.dir}/${eclipselink.sdo.test}/${report.dir}/true/junit-noframes.html" tofile="${download.path}/eclipselink-sdo-lrg-${version.string}.html" failonerror="false"/> |
| <copy file="${build.root.dir}/${eclipselink.dbws.test}/${report.dir}/junit-noframes.html" tofile="${download.path}/eclipselink-dbws-lrg-${version.string}.html" failonerror="false"/> |
| <copy file="${build.root.dir}/${eclipselink.util.dbws.test}/${report.dir}/junit-noframes.html" tofile="${download.path}/eclipselink-dbws-util-lrg-${version.string}.html" failonerror="false"/> |
| <exec executable="${svn.exec}" failonerror="false" logError="true"> |
| <arg value="commit"/> |
| <arg value="-m ${version.string}"/> |
| <arg value="${build.root.dir}/${eclipselink.jar.name}"/> |
| <arg value="${build.root.dir}/${eclipselink.src.install.prefix}${eclipselink.zip.suffix}"/> |
| </exec> |
| <ant antfile="uploadToMaven.xml" dir="${build.root.dir}" target="upload-maven-all"/> |
| <!-- Since we've checked in some files, the svn revision has incremented. To create a valid "latest.svnrev" file --> |
| <!-- it needs to be recreated now that the build has completed. --> |
| <ant antfile="${build.root.dir}/buildsystem/bootstrap.xml" target="get-svn-headrev"/> |
| <move file="${current.svnrev.file}" tofile="${latest.svnrev.file}"/> |
| </target> |
| |
| <target name="publish-maven" depends="init"> |
| <ant antfile="uploadToMaven.xml" dir="${build.root.dir}" target="upload-maven-all"/> |
| </target> |
| |
| <target name="fix-permission"> |
| <chmod file="${build.root.dir}/buildsystem/cleanNightly.sh" perm="ug+x"/> |
| <chmod file="${build.root.dir}/buildsystem/buildNightlyList.sh" perm="ug+x"/> |
| </target> |
| |
| <!-- Antified "cleanNightly.sh" --> |
| <target name="clean-results" depends="fix-permission"> |
| <exec executable="/bin/sh" failonerror="true" logError="true" > |
| <arg value="${build.root.dir}/buildsystem/cleanNightly.sh"/> |
| </exec> |
| </target> |
| |
| <!-- Antified "buildNightlyList.sh" --> |
| <target name="publish-results" depends="clean-results"> |
| <exec executable="/bin/sh" failonerror="true" logError="true" > |
| <arg value="${build.root.dir}/buildsystem/buildNightlyList.sh"/> |
| </exec> |
| </target> |
| |
| <target name="test-for-errors"> |
| <fail message="Some of the junit tests failed. See the ${report.dir}/junit-noframes.html file for details." if="junit.failed"/> |
| </target> |
| |
| <!-- ===== ##### Milestone Targets ##### ===== --> |
| |
| <target name="create-tag"> |
| <echo message="Create a tag (${milestone.tag}) of this revision (${svn.revision}) for this milestone (${build.type})"/> |
| <echo message=" ${svn.branch.url} = ${svn.branch.url}"/> |
| <echo message=" ${svn.base.url} = ${svn.base.url}"/> |
| <echo message=" "/> |
| <echo message="${svn.exec} copy -r ${svn.revision} \\"/> |
| <echo message=" ${svn.branch.url} \\"/> |
| <echo message=" ${svn.base.url}/tags/${milestone.tag} \\"/> |
| <echo message=" -m 'Create ${milestone.tag} Tag for ${version.string}'"/> |
| <exec executable="${svn.exec}" failonerror="false" logError="true"> |
| <arg line="copy"/> |
| <arg line="-r ${svn.revision}"/> |
| <arg line="${svn.branch.url}"/> |
| <arg line="${svn.base.url}/tags/${milestone.tag}"/> |
| <arg line="-m 'Create ${milestone.tag} Tag for ${version.string}'"/> |
| </exec> |
| </target> |
| |
| <target name="promote-pre-init"> |
| <!-- svn.revision and build.time should already be set to the svn revision number and build date of the --> |
| <!-- build being promoted - however, build.time is undefined (it is currently unused) --> |
| <fail unless="svn.revision" message="svn.revision doesn't exist and it should before we reach this point!"/> |
| <fail unless="build.date" message="build.date doesn't exist and it should before we reach this point!"/> |
| <!-- build.type should be set to "M#" or "RELEASE" on the command-line for milestone or release builds --> |
| <fail unless="build.type" message="build.type doesn't exist and it should before we reach this point!"/> |
| <tstamp> |
| <format property="promote.date" pattern="MMM dd, yyyy"/> |
| <format property="run.date" pattern="yyyyMMdd"/> |
| <format property="run.time" pattern="HHmm"/> |
| </tstamp> |
| <property name="version.qualifier" value="v${build.date}-r${svn.revision}"/> |
| </target> |
| |
| <target name="promote-init" depends="promote-pre-init, common-init"> |
| <!-- This depends upon freezing nightly builds after an RC# build - otherwise the nightly to be --> |
| <!-- promoted to a 'RELEASE' build (same as last milestone) could expire off the nightly site --> |
| <property name="build.source.path" value="${eclipselink.download.path}/nightly/${release.version}/${build.date}"/> |
| <available file="${build.source.path}" property="build.path.exist" type="dir"/> |
| <!-- FAIL THIS PROMOTION if the source build is not found --> |
| <fail unless="build.path.exist" message="${build.source.path} not found! Cannot promote this build."/> |
| <property name="temp.rebuild.path" value="/tmp/EL${run.date}.${run.time}-${version.string}"/> |
| <delete dir="${temp.rebuild.path}" failonerror="false"/> |
| <mkdir dir="${temp.rebuild.path}"/> |
| </target> |
| |
| <target name="extract-installer-archive"> |
| <echo message="We need a copy of eclipslink.jar and javax.persistence for maven. Extracting from original InstallerZip for later copy..."/> |
| <unzip dest="${temp.rebuild.path}/install" src="${build.source.path}/${eclipselink.install.prefix}-${version.string}${eclipselink.zip.suffix}"> |
| <patternset> |
| <include name="**/*"/> |
| </patternset> |
| </unzip> |
| </target> |
| |
| <target name="extract-plugin-archive"> |
| <!-- unzip original PluginInstaller to working dir --> |
| <unzip dest="${temp.rebuild.path}/bundlezip" src="${build.source.path}/${eclipselink.plugins.install.prefix}-${version.string}${eclipselink.zip.suffix}"> |
| <patternset> |
| <include name="**/*"/> |
| </patternset> |
| </unzip> |
| </target> |
| |
| <target name="gen-build-for-maven" depends="extract-installer-archive, extract-plugin-archive"> |
| <!-- MUST BE DONE AFTER extracting a version of the archives --> |
| <echo message="Prepare for Maven publishing"/> |
| <property name="tmp.maven.dir" value="${temp.rebuild.path}/maven"/> |
| <!-- need to setup a dir that contains the correct contents for maven to promote --> |
| <mkdir dir="${tmp.maven.dir}"/> |
| <!-- get eclipselink source zip --> |
| <copy file="${build.source.path}/${eclipselink.src.install.prefix}-${version.string}${eclipselink.zip.suffix}" tofile="${tmp.maven.dir}/${eclipselink.src.install.prefix}${eclipselink.zip.suffix}" failonerror="false"/> |
| <!-- get eclipselink.jar (from temp InstallerZip location, so will work if signed or unsigned) --> |
| <copy todir="${tmp.maven.dir}" file="${temp.rebuild.path}/install/eclipselink/jlib/${eclipselink.jar.name}"/> |
| <!-- get bundles --> |
| <copy todir="${tmp.maven.dir}/${plugins.dir}"> |
| <fileset dir="${temp.rebuild.path}/bundlezip"> |
| <include name="org.eclipse.persistence.*.jar"/> |
| </fileset> |
| </copy> |
| <!-- get javax.persistence* --> |
| <copy todir="${tmp.maven.dir}/${eclipselink.jpa.base}/${plugins.dir}"> |
| <fileset dir="${temp.rebuild.path}/bundlezip"> |
| <include name="javax.persistence*2.0*.jar"/> |
| </fileset> |
| </copy> |
| </target> |
| |
| <target name="publish-milestone"> |
| <!-- Publish from nightly published location to Milestone dir --> |
| <mkdir dir="${download.path}"/> |
| <!-- Populated directly from original build --> |
| <copy todir="${download.path}" file="${build.source.path}/${eclipselink.install.prefix}-${version.string}${eclipselink.zip.suffix}" failonerror="false"/> |
| <copy todir="${download.path}" file="${build.source.path}/${eclipselink.plugins.install.prefix}-${version.string}${eclipselink.zip.suffix}" failonerror="false"/> |
| <copy todir="${download.path}" file="${build.source.path}/${eclipselink.src.install.prefix}-${version.string}${eclipselink.zip.suffix}" failonerror="false"/> |
| <copy todir="${download.path}" file="${build.source.path}/${eclipselink.tst.src.prefix}-${version.string}${eclipselink.zip.suffix}" failonerror="false"/> |
| <copy todir="${download.path}" file="${build.source.path}/eclipselink-core-lrg-${version.string}.html" failonerror="false"/> |
| <copy todir="${download.path}" file="${build.source.path}/eclipselink-jpa-lrg-${version.string}.html" failonerror="false"/> |
| <copy todir="${download.path}" file="${build.source.path}/eclipselink-jaxb-lrg-${version.string}.html" failonerror="false"/> |
| <copy todir="${download.path}" file="${build.source.path}/eclipselink-oxm-lrg-${version.string}.html" failonerror="false"/> |
| <copy todir="${download.path}" file="${build.source.path}/eclipselink-sdo-lrg-${version.string}.html" failonerror="false"/> |
| <copy todir="${download.path}" file="${build.source.path}/eclipselink-dbws-lrg-${version.string}.html" failonerror="false"/> |
| <copy todir="${download.path}" file="${build.source.path}/eclipselink-dbws-util-lrg-${version.string}.html" failonerror="false"/> |
| <copy todir="${tmp.maven.dir}" file="${basedir}/pom.xml.template" failonerror="false"/> |
| <copy todir="${tmp.maven.dir}" file="${basedir}/uploadToMaven.xml" failonerror="false"/> |
| <ant antfile="uploadToMaven.xml" dir="${tmp.maven.dir}" target="upload-maven-all"/> |
| <delete dir="${temp.rebuild.path}" failonerror="false"/> |
| </target> |
| |
| <!-- Helper target for cb processing --> |
| <!-- Is intendended only to be called by build post-processing if a cb fails tests --> |
| <!-- Variables used defined only on command-line of script: --> |
| <!-- test.result.zip - name of zip containing test result files --> |
| <!-- test.result.dest.dir - location of "failed build" result dir --> |
| <!-- --> |
| <target name="save-tst-results" depends="init"> |
| <echo message="build.root.dir=${build.root.dir}"/> |
| <echo message="${eclipselink.core.test}/${report.dir}/junit-noframes.html"/> |
| <echo message="${eclipselink.jpa.test}/${report.dir}/junit-noframes.html"/> |
| <echo message="${eclipselink.moxy.test}/${report.dir}/jaxb/junit-noframes.html"/> |
| <echo message="${eclipselink.moxy.test}/${report.dir}/oxm/junit-noframes.html"/> |
| <echo message="${eclipselink.sdo.test}/${report.dir}/true/junit-noframes.html"/> |
| <echo message="${eclipselink.dbws.test}/${report.dir}/junit-noframes.html"/> |
| <echo message="${eclipselink.util.dbws.test}/${report.dir}/junit-noframes.html"/> |
| <zip destfile="${basedir}/${test.result.zip}"> |
| <zipfileset dir="${build.root.dir}"> |
| <include name="${eclipselink.core.test}/${report.dir}/junit-noframes.html"/> |
| <include name="${eclipselink.jpa.test}/${report.dir}/junit-noframes.html"/> |
| <include name="${eclipselink.moxy.test}/${report.dir}/**/junit-noframes.html"/> |
| <include name="${eclipselink.sdo.test}/${report.dir}/**/junit-noframes.html"/> |
| <include name="${eclipselink.dbws.test}/${report.dir}/junit-noframes.html"/> |
| <include name="${eclipselink.util.dbws.test}/${report.dir}/junit-noframes.html"/> |
| </zipfileset> |
| </zip> |
| <copy todir="${test.result.dest.dir}" file="${basedir}/${test.result.zip}" failonerror="false"/> |
| <delete file="${basedir}/${test.result.zip}" failonerror="false"/> |
| </target> |
| |
| </project> |