http://www.apache.org/~psteitz/release.html.
I know that section 12 (Deploy jar and project.xml to Java-Repository) must be doable in a better way using maven, but I am not sure exactly how to do it all automagically. The same is likely true for the physical deployment of the full distributions to /dist/jakarta. I will incorporate any better ideas or corrections before applying anything.
In addition to the maven additions, I removed the following:
1) direction to update components.xml on the commons site (I don't think that this is necessary any more.)
2) the reference to www/jakarta.apache.org/builds/jakarta-commons/release/commons-foo/, since this seems to be defunct (i.e., no more component-level directories).
As I said, this is a first cut. Corrections or suggestions for improvement are most welcome.
-Phil
Index: xdocs/releases/release.xml
===================================================================
RCS file: /home/cvs/jakarta-commons/commons-build/xdocs/releases/release.xml,v
retrieving revision 1.13
diff -u -r1.13 release.xml
--- xdocs/releases/release.xml 20 Jul 2004 21:06:22 -0000 1.13
+++ xdocs/releases/release.xml 13 Dec 2004 02:42:27 -0000
@@ -24,10 +24,11 @@
<body>
<section name='Cutting The Release - Step By Step'>
<p>
- This document gives step-by-step instructions for cutting a release. These
instructions
- assume that the component uses an <code>Ant</code> based master build. If
the component
- being released uses a <code>Maven</code> based master build then you'll
need to improvise a little!
- Any patches for <code>Maven</code> based master builds will be gratefully
received.
+ This document gives step-by-step instructions for cutting a release. These
+ instructions generally assume that the component uses an <code>Ant</code>
+ based master build, though some directions for <code>Maven</code> users
have
+ been interspersed. Any patches to improve the <code>Maven</code>
instructions
+ will be gratefully received.
</p>
<p>
This documentation is also pretty *nix-centric. Hopefully, release
managers using windoz will
@@ -46,8 +47,9 @@
</p>
<p>
In particular, the build version for the component must have been updated
to the release number.
- This is found in <code>build.xml</code>. The component should also be
tested and the documentation
- reviewed.
+ This is found in <code>build.xml</code> and, for <code>Maven</code>
builds, as the
+ <code>currentVersion</code> element in <code>project.xml</code>. The
component should also
+ be tested and the documentation reviewed.
</p>
</subsection>
@@ -56,6 +58,9 @@
Prepare a local working directory to do all the zipping, signing and so
on.
The <code>examples</code> assume this directory is called
<code>release/foo</code>.
</p>
+ <p>
+ If you are using Maven to cut the release, you can skip this step.
+ </p>
</subsection>
<subsection name='2 Update CVS to Release Tag'>
@@ -77,12 +82,73 @@
<p>
Clean build the binary distribution in the standard way.
</p>
+ <p>
+ Using Ant:
<pre>
$ ant clean
$ ant dist
</pre>
+ </p>
+ <p>
+ Or using Maven:
+ <pre>
+$ maven clean dist
+ </pre>
+ </p>
+ <p>
+ The maven <code>dist</code> goal will create both binary and source
+ distributions, as well as release archives, so you can skip steps 4 and 5
+ below if you are using maven. The source and binary release archives will
+ be created for you in <code>commons-foo/target/distributions</code>. In
order
+ for the files to be named correctly and to have the right contents, the
+ following conditions have to be satistified:
+ <ul>
+ <li>
+ The <code>currentVersion</code> in project.xml must match the release
number.
+ </li>
+ <li>
+ Special provisions have to be made to get NOTICE.txt included in the both
the
+ distribution tars/zips and the included jars. To make sure that this file
+ is included in maven-generated jars, include the following in the
+ <code>build</code> section of your <code>project.xml</code> (or just add
the
+ <code>resource</code> defined below to the build resources you already
have).
+ <pre>
+<resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <includes>
+ <include>NOTICE.txt</include>
+ </includes>
+ <targetPath>META-INF</targetPath>
+ </resource>
+</resources>
+ </pre>
+ One way to get maven to include NOTICE.txt in the top-level directory of
+ source and binary distribution files (zips and tars) is to define preGoals
+ for maven's dist goal that copy NOTICE.txt to the source and binary
assembly
+ directories that it uses to package the release. To do this, add the
snippet
+ below to maven.xml.
+ <pre>
+<preGoal name="dist:build-bin">
+ <copy todir="${maven.dist.bin.assembly.dir}">
+ <fileset file='${basedir}/NOTICE.txt'/>
+ </copy>
+</preGoal>
+<preGoal name="dist:build-src">
+ <copy todir="${maven.dist.src.assembly.dir}">
+ <fileset file='${basedir}/NOTICE.txt'/>
+ </copy>
+</preGoal>
+ </pre>
+ </li>
+ </ul>
+ </p>
<p>
-Review the generated documentation and in particular ensure that the version
number is correct. Check <code>dist/RELEASE-NOTES.txt</code>.
+Review the generated documentation and in particular ensure that the version
+number is correct. Check <code>dist/RELEASE-NOTES.txt</code> Also verify that
+the release jar(s) contain valid Manifest(s), as described
+<a href="./prepare.html#Update The Jar Manifest">here</a> as well as both
+LICENSE.txt and NOTICE.txt.
</p>
</subsection>
@@ -228,7 +294,7 @@
</pre>
</li>
<li>
-<strong>Check Sums</strong>.
+<a name="verify sums"><strong>Verify Sums</strong></a>.
Verify md5 check sums. If you can, use another application to double check the
sums. Here
verifications are performed using openssl.
<pre>
@@ -394,12 +460,33 @@
<subsection name='12 Deploy jar and project.xml to Java-Repository'>
<p>
+ <ul>
+ <li>
Your jar file(s) should also be placed in
- <code>/www/www.apache.org/dist/java-repository/commons-foo/jars</code>.
+ <code>/www/www.apache.org/dist/java-repository/commons-foo/jars</code>,
+ along with md5 checksum file(s) created, named and verified as above
+ (see <a href="#6 Create Sums">Create Sums</a> and <a href="#verify sums">
+ Verify Sums</a>).
+ </li>
+ <li>
If available, your project.xml should be placed in
<code>/www/www.apache.org/dist/java-repository/commons-foo/poms</code>
as the file <code>commons-foo-1.2.pom</code>.
Ensure the version number matches the one inside the
<code>project.xml</code>.
+ </li>
+ <li>
+ The current html version of the Apache Software License should be placed in
+ <code>/www/www.apache.org/dist/java-repository/commons-foo/licenses</code>
+ as the file <code>license.html</code>. If this file does not
+ exist or reflects an out-of-date version, copy a current version from
+ another component directory. There should also be a symlink named
+ <code>commons-foo.license</code> in this directory. If this link does
+ not exist, create it using
+ <pre>
+> ln -s license.html commons-foo.license
+ </pre>
+ </li>
+ </ul>
</p>
<p>
These files will then be mirrored to the iBiblio java repository and
picked up by build tools.
@@ -491,10 +578,17 @@
<subsection name='15 Update Commons Web Site'>
- <ul>
- <li>
- <strong>Update Links</strong>.
- Update the API Docs and Release notes links (whilst you're still
logged in on www.apache.org)
+<p>
+For mavenized components, executing
+<pre>
+maven -Dmaven.username=<your-apache-username> sshdeploy
+</pre>
+will update the component web site. Verify that the correct version of both
+the release notes and the API docs appear on the live site.
+</p>
+<p>
+If your site is not maven-generated, update the API Docs and Release notes
+links manually (while you're still logged in on www.apache.org).
<pre>
> cd /www/jakarta.apache.org/commons/foo
> rm RELEASE-NOTES.txt
@@ -504,35 +598,8 @@
> ln -s commons-foo-1.2/RELEASE-NOTES.txt RELEASE-NOTES.txt
> ln -s commons-foo-1.2/docs/api api
</pre>
- </li>
- <li>
- <strong>Update Shared Pages</strong>.
- (You can log off www.apache.org now.)
-Edit the commons components page
(<code>jakarta-commons/xdocs/components.xml</code>) to reflect the
-new release. Add the new release to the list under the component description.
If the list of releases
-for your component is getting long then please consider removing some of the
older ones.
-Check, commit and then update the web site in the normal manner.
-<pre>
-> cd /www/jakarta.apache.org/commons/
-> cvs -q up
-</pre>
- </li>
- <li>
- <strong>Update Component Pages</strong>
- Make sure that the component's web site is up to date.
- </li>
- <li>
- <strong>Check commons release directory</strong>
-Check the commons release directory for your component on Daedalus
-(<code>www/jakarta.apache.org/builds/jakarta-commons/release/commons-foo/</code>).
-Make sure that it has a <code>README.html</code> telling users that new
release should be
-obtained through the mirrors.
-If this file does not exist, please create one.
-Instructions are given in <a href='mirror.html#4 Update commons release
directory'>First Time Mirroring</a>.
- </li>
- </ul>
+</p>
</subsection>
-
<subsection name='16 Create Announcements'>
<p>--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
