blob: 201aea9f5201bcdd231b38a12f0edc9a583caf2f [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<project name="build-web-server" default="precommit" xmlns:ivy="antlib:org.apache.ivy.ant">
<path id="bundles"/>
<property file="${basedir}/../build.properties"/>
<property file="${basedir}/../build.versions"/>
<import file="${basedir}/../virgo-build/multi-bundle/default.xml"/>
<target name="precommit" depends="clean, clean-integration, test, package, smoke-test"
description="Performs a CI server-like build, should be run prior to performing a Git push"/>
<target name="fetch-kernel-updatesite">
<mkdir dir="${target.dir}"/>
<condition property="dependancy.folder" value="milestone" else="${adjusted.release.type}">
<or>
<contains string="${org.eclipse.virgo.kernel}" substring=".M"/>
<contains string="${org.eclipse.virgo.kernel}" substring=".RC"/>
</or>
</condition>
<condition property="dependancy.folder" value="release" else="${adjusted.release.type}">
<contains string="${org.eclipse.virgo.kernel}" substring=".RELEASE"/>
</condition>
<get src="http://build.eclipse.org/rt/virgo/zips/${dependancy.folder}/VK/${org.eclipse.virgo.kernel}/virgo-kernel-updatesite-${org.eclipse.virgo.kernel}.zip"
dest="${target.dir}/virgo-kernel-updatesite-${org.eclipse.virgo.kernel}.zip"
usetimestamp="true" />
<echo message="Fetched the Kernel updatesite zip to ${target.dir}/virgo-kernel-updatesite-${org.eclipse.virgo.kernel}.zip"/>
</target>
<target name="package" depends="fetch-kernel-updatesite">
<delete dir="${package.output.dir}" quiet="true"/>
<mkdir dir="${package.output.dir}"/>
<property name="kernel.stage.file" value=""/>
<property name="tomcat.server.resources" value="${target.dir}/tomcat_server_resources"/>
<property name="repository.ext" value="${tomcat.server.resources}/repository/ext"/>
<property name="repository.usr" value="${tomcat.server.resources}/repository/usr"/>
<unzip src="${target.dir}/virgo-kernel-updatesite-${org.eclipse.virgo.kernel}.zip" dest="${p2.repository.dir}">
<globmapper from="virgo-kernel-updatesite-${org.eclipse.virgo.kernel}/*" to="*"/>
</unzip>
<delete file="${target.dir}/virgo-kernel-updatesite-${org.eclipse.virgo.kernel}.zip" quiet="true"/>
<unzip src="${p2.repository.dir}/binary/kernel_specific_resources_1.0.0" dest="${tomcat.server.resources}">
<globmapper from="kernel_specific_resources_1.0.0/*" to="*"/>
</unzip>
<mkdir dir="${repository.usr}"/>
<antcall target="package.config"/>
<antcall target="package.docs"/>
<antcall target="package.lib"/>
<antcall target="package.pickup"/>
<antcall target="package.repository"/>
<antcall target="package.resources"/>
<antcall target="package.publish"/>
</target>
<target name="package.publish">
<property name="tomcat.server.resources.location" value="${target.dir}/tomcat_server_resources_zipped"/>
<zip destfile="${tomcat.server.resources.location}/binary/tomcat_server_resources">
<zipfileset dir="${tomcat.server.resources}"/>
</zip>
<delete dir="${tomcat.server.resources}" quiet="true"/>
<!--prepare tomcat server feature for publishing -->
<copy todir="${target.dir}/assembly/features" failonerror="false">
<fileset dir="${basedir}/publish_resources/features"/>
</copy>
<!-- proceed with publish -->
<antcall target="fetch-unzipped-virgo-build-tools"/>
<property name="p2.products.location" value="${basedir}/publish_resources/products"/>
<antcall target="p2.publish-binary">
<param name="repository" value="${p2.repository.dir}"/>
<param name="source" value="${tomcat.server.resources.location}"/>
</antcall>
<echo message="Published the tomcat server resources to ${p2.repository.dir}."/>
<antcall target="p2.publish-bundles-features">
<param name="repository" value="${p2.repository.dir}"/>
<param name="source" value="${target.dir}/assembly"/>
</antcall>
<echo message="Published bundles and features to ${p2.repository.dir}."/>
<antcall target="p2.publish-product">
<param name="repository" value="${p2.repository.dir}"/>
<param name="product.file.location" value="${p2.products.location}/tomcat-server/tomcat-server.product"/>
</antcall>
<echo message="Published tomcat server product to ${p2.repository.dir}."/>
<antcall target="p2.install-virgo-product">
<param name="repository" value="${p2.repository.dir}"/>
<param name="destination" value="${package.output.dir}"/>
<param name="product.iu" value="tomcat-server.product"/>
</antcall>
<echo message="Installed Virgo Tomcat Server for distribution purposes."/>
<mkdir dir="${artifacts.dir}"/>
<delete dir="${package.output.dir}/Eclipse.app" quiet="true"/>
<zip destfile="${package.output.file}">
<zipfileset dir="${package.dir}" includes="${package.basename}/bin/*.sh" filemode="755"/>
<zipfileset dir="${package.dir}" includes="${package.basename}/configuration/org.eclipse.virgo.kernel.jmxremote.access.properties" filemode="600"/>
<zipfileset dir="${package.dir}">
<exclude name="${package.basename}/bin/*.sh"/>
<exclude name="${package.basename}/configuration/org.eclipse.virgo.kernel.jmxremote.access.properties"/>
</zipfileset>
</zip>
<zip destfile="${updatesite.output.file}">
<zipfileset dir="${p2.repository.dir}"/>
</zip>
<delete dir="${tomcat.server.resources.location}" quiet="true"/>
<delete dir="${target.dir}/assembly" quiet="true"/>
<delete dir="${tools.dir}" quiet="true"/>
</target>
<target name="package.config">
<copy todir="${tomcat.server.resources}/configuration" failonerror="false" overwrite="true">
<fileset dir="${basedir}/configuration"/>
</copy>
<replaceregexp match="initialArtifacts =.*\.springdm"
replace="initialArtifacts=repository:plan/org.eclipse.virgo.kernel.userregion.springdm, repository:plan/org.eclipse.virgo.web.tomcat" flags="s"
file="${tomcat.server.resources}/configuration/org.eclipse.virgo.kernel.userregion.properties"/>
<replaceregexp match="virgo-kernel" replace="virgo-server" flags="g"
file="${tomcat.server.resources}/configuration/serviceability.xml"/>
</target>
<target name="package.docs" depends="ivy.init">
<ivy:resolve resolveId="copy.path" file="${basedir}/docs-ivy.xml" transitive="false" conf="docs"/>
<ivy:retrieve resolveId="copy.path" pattern="${basedir}/target/docs/[artifact]-[revision].[ext]" conf="docs" type="zip, pdf"/>
<copy todir="${tomcat.server.resources}/docs/virgo-user-guide/pdf" flatten="true">
<fileset dir="${basedir}/target/docs">
<include name="**/virgo-user-guide*.pdf"/>
</fileset>
</copy>
<copy todir="${tomcat.server.resources}/docs/virgo-programmer-guide/pdf" flatten="true">
<fileset dir="${basedir}/target/docs">
<include name="**/virgo-programmer-guide*.pdf"/>
</fileset>
</copy>
<unzip dest="${tomcat.server.resources}/docs/virgo-user-guide">
<fileset dir="${basedir}/target/docs">
<include name="**/virgo-user-guide*.zip"/>
</fileset>
</unzip>
<unzip dest="${tomcat.server.resources}/docs/virgo-programmer-guide">
<fileset dir="${basedir}/target/docs">
<include name="**/virgo-programmer-guide*.zip"/>
</fileset>
</unzip>
</target>
<target name="package.lib">
<echo file="${tomcat.server.resources}/lib/.version" append="true"
message="virgo.server.version=${bundle.version}&#xa;"/>
</target>
<target name="package.pickup" depends="ivy.init">
<ivy:resolve resolveId="copy.path" file="${basedir}/pickup-ivy.xml" transitive="true"/>
<ivy:retrieve resolveId="copy.path" pattern="${tomcat.server.resources}/pickup/[artifact]_[revision].[ext]" type="jar, war, wab" conf="pickup"/>
<ivy:retrieve resolveId="copy.path" pattern="${tomcat.server.resources}/pickup/[artifact]_[revision].[ext]" type="plan" conf="pickup-plan"/>
<ivy:retrieve resolveId="copy.path" pattern="${repository.ext}/[artifact]_[revision].[ext]" type="jar, war, wab" conf="pickup-plan"/>
</target>
<target name="package.repository" depends="ivy.init">
<ivy:resolve resolveId="copy.path" file="${basedir}/repository-ivy.xml" transitive="false"/>
<ivy:retrieve resolveId="copy.path" pattern="${repository.ext}/[artifact]_[revision].[ext]" conf="ext" type="library,jar,plan"/>
<ivy:retrieve resolveId="copy.path" pattern="${repository.ext}/[artifact].[ext]" conf="ext" type="configuration"/>
<ivy:resolve resolveId="copy.path" file="${basedir}/repository-ivy.xml" transitive="true"/>
<ivy:retrieve resolveId="copy.path" pattern="${repository.ext}/[artifact]_[revision].[ext]" conf="transitive" type="library,jar,plan" />
<ivy:retrieve resolveId="copy.path" pattern="${repository.ext}/[artifact].[ext]" conf="transitive" type="configuration" />
</target>
<target name="package.resources">
<copy todir="${tomcat.server.resources}" failonerror="false">
<fileset dir="${basedir}/resources"/>
</copy>
</target>
<target name="smoke-test" description="Runs a smoke test on the packaged build">
<path id="smoke.test.bundles">
<pathelement location="${basedir}/../org.eclipse.virgo.server.smoketest" />
</path>
<antcall target="test.pre"/>
<all-bundles target="test-package" buildpathRef="smoke.test.bundles">
<property name="package.output.file" value="${package.output.file}"/>
<property name="package.basename" value="${package.basename}"/>
<property name="test-results.output.dir" value="${test-results.output.dir}"/>
</all-bundles>
<antcall target="test.post"/>
</target>
</project>