[jboss-svn-commits] JBL Code SVN: r24894 - labs/jbosstm/trunk.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jan 23 11:44:39 EST 2009


Author: jhalliday
Date: 2009-01-23 11:44:39 -0500 (Fri, 23 Jan 2009)
New Revision: 24894

Added:
   labs/jbosstm/trunk/build-release-pkgs.xml
Log:
Add script to do release packaging. JBTM-480


Added: labs/jbosstm/trunk/build-release-pkgs.xml
===================================================================
--- labs/jbosstm/trunk/build-release-pkgs.xml	                        (rev 0)
+++ labs/jbosstm/trunk/build-release-pkgs.xml	2009-01-23 16:44:39 UTC (rev 24894)
@@ -0,0 +1,283 @@
+<!--
+  JBoss, Home of Professional Open Source
+  Copyright 2009, Red Hat Middleware LLC, and individual contributors
+  as indicated by the @author tags.
+  See the copyright.txt in the distribution for a
+  full listing of individual contributors.
+  This copyrighted material is made available to anyone wishing to use,
+  modify, copy, or redistribute it subject to the terms and conditions
+  of the GNU Lesser General Public License, v. 2.1.
+  This program is distributed in the hope that it will be useful, but WITHOUT A
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+  PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+  You should have received a copy of the GNU Lesser General Public License,
+  v.2.1 along with this distribution; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+  MA  02110-1301, USA.
+
+  (C) 2007-2009,
+  @author JBoss Inc. (jonathan.halliday at redhat.com)
+-->
+<!--
+    build-release-pkgs.xml: Utility script for building JBossTS release artifacts.
+    Probably only useful for JBossTS dev team. Everyone else should only need the
+    regular build.xml.
+
+    This script automates the some steps of the release build and packaging process
+    to reduce the opportunities for users to get it wrong. For example, it works from
+    a fresh svn checkout to ensure locally modified files in a dev's svn working copy
+    don't sneak into the release bundle.
+
+    usage:
+      Tag the JBossTS release in svn.
+        or you can do a snapshot release direct from trunk, see properties below.
+      Check out the necessary bits of repository.jboss.org
+        artifacts for use by other projects e.g. JBossAS get published here
+        You don't need to check out JBossTS, the script does that.
+      Check out the jbossts web pages project
+        source and binary bundles for download by end users get published here
+      Build or install a tagged release of JBossAS to build against. Set JBOSS_HOME.
+        Use the oldest JBossAS release the JBossTS release is intended to support.
+      Update the properties section below to suit your machine.
+      Set JAVA_HOME to a jdk 1.5, since that's the version we currently support.
+      ant -f build-release-pkgs.xml dist mvn-repository cms-repository
+      check in the repository.jboss.org and the cms updates to publish the files.
+      Update the project.xml in the cms to link the release bundles from the web pages.
+      Update appropriate wiki pages, such as the 'which version to use' page.
+
+      This version is for JBossTS 4.6 onwards. Don't use it for earlier releases, they are structured differently.
+-->
+<project name="JBossTS Release Packaging" default="dist" basedir=".">
+    <description>
+        package JBossTS binary + src files for upload to website and other repos.
+    </description>
+
+    <!-- you probably need to change these properties to suit your machine -->
+
+    <!-- uncomment the block of properties below to do a snapshot release.
+            you need permissions to webdav upload to the server for this to work
+            http://www.jboss.org/community/docs/DOC-11381  -->
+
+<!--
+    <property name="svnbase" value="https://svn.jboss.org/repos/labs/labs/jbosstm"/>
+    <property name="tag" value="trunk"/>
+    <property name="filename" value="4.6.0-SNAPSHOT"/>
+    <property name="mvn.repositoryId" value="snapshots.jboss.org"/>
+    <property name="mvn.url" value="dav:https://snapshots.jboss.org/maven2"/>
+-->
+
+
+    <!-- a working direrctory for the process. Can contain output from previous releases if you like to keep them archived locally. -->
+    <property name="workdir" location="/tmp/packaged_builds"/>
+    <!-- where to get the source -->
+    <property name="svnbase" value="https://svn.jboss.org/repos/labs/labs/jbosstm/tags"/>
+    <!-- The tag as it appears under svnbase -->
+    <property name="tag" value="JBOSSTS_4_6_0_CR1"/>
+    <!-- The file name base for the user downloadable files. Derive it from the tag -->
+    <property name="filename" value="4.6.0.CR1"/>
+    <!-- the location the JBossTS web site content svn is checked out to -->
+    <property name="cmsdir" value="/home/jhalli/IdeaProjects/jboss/jbosstm-cms/"/>
+    <!-- the location the maven repository svn is checked out to.
+        Hint: checkout only the subtree you need, the full thing is huge -->
+    <property name="mvn.repodir" value="/home/jhalli/IdeaProjects/jboss/repository.jboss.org/maven2"/>
+
+    <!-- you probably don't need to change anything below here -->
+
+    <property name="mvn.repositoryId" value="repository.jboss.org"/>
+    <property name="mvn.url" value="file:///${mvn.repodir}"/>
+
+    <target name="init">
+        <tstamp/>
+        <mkdir dir="${workdir}"/>
+    </target>
+
+    <target name="dist" depends="init" description="build the end-user release bundles (src and binary)">
+
+        <!-- pull the source code from svn -->
+        <exec executable="svn" dir="${workdir}">
+            <arg value="export"/>
+            <arg value="${svnbase}/${tag}"/>
+        </exec>
+
+        <!-- package the full source release (all src tree) -->
+        <delete file="${workdir}/jbossts-full-${filename}-src.zip"/>
+        <zip basedir="${workdir}" destfile="${workdir}/jbossts-full-${filename}-src.zip"
+             includes="${tag}/**"/>
+
+        <!-- package the JTA only src tree (no JTS, XTS) -->
+        <delete file="${workdir}/jbossts-jta-${filename}-src.zip"/>
+        <zip basedir="${workdir}" destfile="${workdir}/jbossts-jta-${filename}-src.zip"
+             includes="${tag}/**"
+             excludes="${tag}/ArjunaJTS/**, ${tag}/XTS/**"/>
+
+        <!-- build the JTA only binary release -->
+        <delete dir="${workdir}/build"/>
+        <mkdir dir="${workdir}/build"/>
+        <unzip src="${workdir}/jbossts-jta-${filename}-src.zip" dest="${workdir}/build"/>
+        <ant dir="${workdir}/build/${tag}" antfile="build.xml" target="jbossjta"/>
+
+        <!-- package the JTA only binary release -->
+        <copy todir="${workdir}/build/${tag}/${tag}">
+            <fileset dir="${workdir}/build/${tag}/install"/>
+        </copy>
+        <delete file="${workdir}/jbossts-jta-${filename}.zip"/>
+        <zip basedir="${workdir}/build/${tag}" destfile="${workdir}/jbossts-jta-${filename}.zip"
+             includes="${tag}/**"/>
+
+        <!-- build the full release (assumes XTS builds against JTS) -->
+        <delete dir="${workdir}/build"/>
+        <mkdir dir="${workdir}/build"/>
+        <unzip src="${workdir}/jbossts-full-${filename}-src.zip" dest="${workdir}/build"/>
+        <ant dir="${workdir}/build/${tag}" antfile="build.xml" target="jbossjts"/>
+        <ant dir="${workdir}/build/${tag}/XTS" antfile="build.xml" target="install">
+            <!-- build the jbossxts.sar with 1.1 only, not 1.0 (which is unsupported) -->
+            <property  name="sartype" value="sar-11"/>
+        </ant>
+
+        <!-- package the full release -->
+        <copy todir="${workdir}/build/${tag}/${tag}">
+            <fileset dir="${workdir}/build/${tag}/install"/>
+        </copy>
+        <copy todir="${workdir}/build/${tag}/${tag}/xts">
+            <fileset dir="${workdir}/build/${tag}/XTS/xts-install"/>
+        </copy>
+        <delete file="${workdir}/jbossts-full-${filename}.zip"/>
+        <zip basedir="${workdir}/build/${tag}" destfile="${workdir}/jbossts-full-${filename}.zip"
+             includes="${tag}/**"/>
+    </target>
+
+    <!-- copy the release into the cms svn tree (http://www.jboss.org/jbosstm web site content) -->
+    <target name="cms-repository" description="copy release bundles to JBossTS web site content">
+        <mkdir dir="${cmsdir}/downloads/${filename}"/>
+        <mkdir dir="${cmsdir}/downloads/${filename}/src"/>
+        <mkdir dir="${cmsdir}/downloads/${filename}/binary"/>
+        <mkdir dir="${cmsdir}/downloads/${filename}/notes"/>
+        <copy todir="${cmsdir}/downloads/${filename}/src">
+            <fileset dir="${workdir}" includes="jbossts-*-${filename}-src.zip"/>
+        </copy>
+        <copy todir="${cmsdir}/downloads/${filename}/binary">
+            <fileset dir="${workdir}" includes="jbossts-*-${filename}.zip"/>
+        </copy>
+        <!-- TODO: notes dir, xml generation? project.xml edits -->
+    </target>
+
+    <!-- http://wiki.jboss.org/wiki/MavenReleaseRepository -->
+    <target name="mvn-repository" description="copy the release artifacts to the maven repository">
+        <delete dir="${workdir}/build"/>
+        <mkdir dir="${workdir}/build"/>
+
+        <!-- As we don't actually use maven as a build tool this requires a fair bit of black magic.
+         We no longer release the jta jars to maven, just the jts ones plus the jta version of the properties file
+         so that they can function as a jta. The jta and jts version of the config file have the same name
+         so they need to be renamed going into maven and then again coming out. yuck.
+         -->
+
+        <!-- extract and save the JTA version of the config file -->
+        <unzip src="${workdir}/jbossts-jta-${filename}.zip" dest="${workdir}/build"/>
+        <mkdir dir="${workdir}/build/resources"/>
+        <delete file="${workdir}/build/resources.jar"/>
+        <copy file="${workdir}/build/${tag}/etc/jbossjta-properties.xml"
+                tofile="${workdir}/build/resources/jbossts-properties.xml-forJTA" />
+
+        <!-- now package the JTS -->
+
+        <delete dir="${workdir}/build/${tag}"/>
+        <unzip src="${workdir}/jbossts-full-${filename}.zip" dest="${workdir}/build"/>
+
+        <exec executable="mvn" dir="${workdir}">
+            <arg value="deploy:deploy-file"/>
+            <arg value="-Dfile=${workdir}/build/${tag}/lib/jbossjts.jar"/>
+            <arg value="-Dpackaging=jar"/>
+            <arg value="-Durl=${mvn.url}"/>
+            <arg value="-DrepositoryId=${mvn.repositoryId}"/>
+            <arg value="-DgroupId=jboss.jbossts"/>
+            <arg value="-DartifactId=jbossjts"/>
+            <arg value="-Dversion=${filename}"/>
+            <arg value="-DgeneratePom=true"/>
+        </exec>
+
+        <exec executable="mvn" dir="${workdir}">
+            <arg value="deploy:deploy-file"/>
+            <arg value="-Dfile=${workdir}/build/${tag}/lib/jbossjts-integration.jar"/>
+            <arg value="-Dpackaging=jar"/>
+            <arg value="-Durl=${mvn.url}"/>
+            <arg value="-DrepositoryId=${mvn.repositoryId}"/>
+            <arg value="-DgroupId=jboss.jbossts"/>
+            <arg value="-DartifactId=jbossjts-integration"/>
+            <arg value="-Dversion=${filename}"/>
+            <arg value="-DgeneratePom=true"/>
+        </exec>
+
+        <exec executable="mvn" dir="${workdir}">
+            <arg value="deploy:deploy-file"/>
+            <arg value="-Dfile=${workdir}/build/${tag}/lib/jbossjts-jacorb.jar"/>
+            <arg value="-Dpackaging=jar"/>
+            <arg value="-Durl=${mvn.url}"/>
+            <arg value="-DrepositoryId=${mvn.repositoryId}"/>
+            <arg value="-DgroupId=jboss.jbossts"/>
+            <arg value="-DartifactId=jbossjts-jacorb"/>
+            <arg value="-Dversion=${filename}"/>
+            <arg value="-DgeneratePom=true"/>
+        </exec>
+
+        <exec executable="mvn" dir="${workdir}">
+            <arg value="deploy:deploy-file"/>
+            <arg value="-Dfile=${workdir}/build/${tag}/lib/ext/jbossts-common.jar"/>
+            <arg value="-Dpackaging=jar"/>
+            <arg value="-Durl=${mvn.url}"/>
+            <arg value="-DrepositoryId=${mvn.repositoryId}"/>
+            <arg value="-DgroupId=jboss.jbossts"/>
+            <arg value="-DartifactId=jbossts-common"/>
+            <arg value="-Dversion=${filename}"/>
+            <arg value="-DgeneratePom=true"/>
+        </exec>
+
+        <!-- take the object store browser from jts, it will work with jta too -->
+        <exec executable="mvn" dir="${workdir}">
+            <arg value="deploy:deploy-file"/>
+            <arg value="-Dfile=${workdir}/build/${tag}/bin/jbossts-tools.sar"/>
+            <arg value="-Dpackaging=sar"/>
+            <arg value="-Durl=${mvn.url}"/>
+            <arg value="-DrepositoryId=${mvn.repositoryId}"/>
+            <arg value="-DgroupId=jboss.jbossts"/>
+            <arg value="-DartifactId=jbossts-tools"/>
+            <arg value="-Dversion=${filename}"/>
+            <arg value="-DgeneratePom=true"/>
+        </exec>
+
+        <!-- the resources part appears to require a bit of a kludge: -->
+        <!-- add to the same dir as the previously cached jta properties file, then jar up -->
+        <copy file="${workdir}/build/${tag}/etc/jbossjts-properties.xml"
+                tofile="${workdir}/build/resources/jbossts-properties.xml-forJTS" />
+
+        <jar basedir="${workdir}/build" includes="resources/*" destfile="${workdir}/build/resources.jar"/>
+
+        <exec executable="mvn" dir="${workdir}">
+            <arg value="deploy:deploy-file"/>
+            <arg value="-Dfile=${workdir}/build/resources.jar"/>
+            <arg value="-Dpackaging=jar"/>
+            <arg value="-Durl=${mvn.url}"/>
+            <arg value="-DrepositoryId=${mvn.repositoryId}"/>
+            <arg value="-DgroupId=jboss.jbossts"/>
+            <arg value="-DartifactId=resources"/>
+            <arg value="-Dversion=${filename}"/>
+            <arg value="-DgeneratePom=true"/>
+        </exec>
+
+        <!-- now we do XTS -->
+
+        <exec executable="mvn" dir="${workdir}">
+            <arg value="deploy:deploy-file"/>
+            <arg value="-Dfile=${workdir}/build/${tag}/xts/sar/jbossxts.sar"/>
+            <arg value="-Dpackaging=sar"/>
+            <arg value="-Durl=${mvn.url}"/>
+            <arg value="-DrepositoryId=${mvn.repositoryId}"/>
+            <arg value="-DgroupId=jboss.jbossts"/>
+            <arg value="-DartifactId=jbossxts"/>
+            <arg value="-Dversion=${filename}"/>
+            <arg value="-DgeneratePom=true"/>
+        </exec>
+
+    </target>
+
+</project>




More information about the jboss-svn-commits mailing list