Home > Documentation > Geronimo Release Process > Geronimo Server Release Process |
The next sections are copied from http://maven.apache.org/developers/release/releasing.html with modifications for Geronimo.
What follows is a description of releasing a Geronimo project to a staging repository, whereupon it is scrutinized by the community, approved, and transfered to a production repository.
Prerequisite
Be sure that:
settings.xml
. For more information, please refer to Maven Committer settings which also apply for Geronimo committers.In order to release a project you must also have the following setup in your $HOME/.m2/settings.xml
which is a profile that defines the staging repository.
Here's what your release profile might look like in your $HOME/.m2/settings.xml
:
The server name apache.releases at the start of deploy.altRepository must correspond to the apache.releases server definition.
Also that your apache id does not start with "~".
Everything that you need to release has (will have, actually) been configured in the genesis root pom all Geronimo projects inherit from.
Your project should adhere to standard trunk,branches,tags svn layout in which case no further release profile configuration should be needed. Some slight deviation such as our specs project still works without extra configuration. Avoid more complex layouts that require special configuration.
This is the base release configuration in the genesis root pom:
This incorporates some aspects of the maven release process but stops short of actually using the maven release plugin. It utilizes a branch for the release process.
Once a new branch is created you will generally need to manage the version number in the poms for parent entries. The following Perl scripts will assist in that task. It could use some polishing but given the relatively infrequent use.
perl -i.orig -pe '
$done = 0 if /<?xml/;
$inParent = 1 if not $done and /<parent>/;
s,oldVersion</version>,newVersion</version>, if $inParent and not $done;
$done = $inParent = 1 if /<\/parent>/;
' $(find GeronimoDirectory -name pom.xml | grep -v "GeronimoDirectory/pom.xml")
Remember to properly escape periods in the oldVersion. For instance, to change 1.1.1-SNAPSHOT to 1.1.1 you would have
perl -i.orig -pe '
$done = 0 if /<?xml/;
$inParent = 1 if not $done and /<parent>/;
s,2\.1\.2-SNAPSHOT</version>,2.1.2</version>, if $inParent and not $done;
$done = $inParent = 1 if /<\/parent>/;
' $(find GeronimoDirectory -name pom.xml | grep -v "GeronimoDirectory/pom.xml")
making the above script work
You must replace GeronimoDirectory above with the fully qualified path to the directory (using "~" will not work).
Also Note: there are references to versions outside of the pom parent entries updated by the script which will also need to be updated with the new version.
In addition to the pom version changes there are several other places where version updates are necessary. To be certain all have been updated you should grep the source for old version references to ensure that those remaining are correct. Here is an attempt to capture other version changes necessary:
In addition, there are some special version updates required in some pom.xml files beyond those addressed by the script:
Make similar changes in the branch that will continue on for the next release.
In addition, there are special updates for references to release notes and the plugin website:
In addition, there are special updates for artifact-alias entries:
We create a branch at freeze time for the following reasons:
~/.m2/settings.xml
updated as specified above in Releasing a Geronimo Projectsvn mv SRC-URL DEST-URL -m "Reason for this commit".
pom.xml
to point to the final url in tags. Eg:
mvn install
find . -name target | xargs rm -rf mvn rat:check
There are a few source files that cannot contain license headers due to the expected format of the file (like LogFactory classes.) Compare these files against the last release to verify it's okay to release them without headers and ask the prior release manager and/or dev list for guidance.
Server 2.0.x/2.1.x - find . -name target | xargs rm -rf mvn -Pstaging deploy Server 2.2 - find . -name target | xargs rm -rf mvn -Prelease,no-it deploy
Be extremely careful with this step. There have been times when a slight modification in the above command will result in items being deployed directly to the rsync location rather than to the staging location.
Before running this step, verify that there is a corresponding "staging" or "release" profile in pom.xml.
If there are issues/problems with the deploy to the staging location you may have to stage to a local repository and then scp the content to an apache staging location.
svn export https://svn.apache.org/repos/asf/geronimo/server/branches/2.1.2 geronimo-2.1.2-src tar -zcvf geronimo-2.1.2-src.tar.gz geronimo-2.1.2-src
gpg --print-md MD5 ./geronimo-2.1.2-src.tar.gz > ./geronimo-2.1.2-src.tar.gz.md5
gpg --print-md MD5 ./geronimo-2.1.2-src.zip > ./geronimo-2.1.2-src.zip.md5
gpg --print-md MD5 ./RELEASE_NOTES-2.1.2.txt > ./RELEASE_NOTES-2.1.2.txt.md5
gpg --print-md MD5 ./README.txt > ./README.txt.md5
gpg --print-md MD5 ./NOTICE.txt > ./NOTICE.txt.md5
gpg --print-md MD5 ./LICENSE.txt > ./LICENSE.txt.md5
gpg --print-md MD5 ./DISCLAIMER.txt > ./DISCLAIMER.txt.md5
gpg --print-md SHA1 ./geronimo-2.1.2-src.tar.gz > ./geronimo-2.1.2-src.tar.gz.sha1
gpg --print-md SHA1 ./geronimo-2.1.2-src.zip > ./geronimo-2.1.2-src.zip.sha1
gpg --print-md SHA1 ./RELEASE_NOTES-2.1.2.txt > ./RELEASE_NOTES-2.1.2.txt.sha1
gpg --print-md SHA1 ./README.txt > ./README.txt.sha1
gpg --print-md SHA1 ./NOTICE.txt > ./NOTICE.txt.sha1
gpg --print-md SHA1 ./LICENSE.txt > ./LICENSE.txt.sha1
gpg --print-md SHA1 ./DISCLAIMER.txt > ./DISCLAIMER.txt.sha1
gpg --armor --output ./geronimo-2.1.2-src.tar.gz.asc --detach-sig ./geronimo-2.1.2-src.tar.gz
gpg --armor --output ./geronimo-2.1.2-src.zip.asc --detach-sig ./geronimo-2.1.2-src.zip
gpg --armor --output ./RELEASE_NOTES-2.1.2.txt.asc --detach-sig ./RELEASE_NOTES-2.1.2.txt
gpg --armor --output ./README.txt.asc --detach-sig ./README.txt
gpg --armor --output ./NOTICE.txt.asc --detach-sig ./NOTICE.txt
gpg --armor --output ./LICENSE.txt.asc --detach-sig ./LICENSE.txt
gpg --armor --output ./DISCLAIMER.txt.asc --detach-sig ./DISCLAIMER.txt
Ensure that your public PGP key is in appropriate public locations (esp. /www/www.apache.org/dist/geronimo/KEYS on people and http://pgp.mit.edu/) and that your pgp key has been signed by several other apache committers to create a web of trust.
You will need to copy the RELEASE_NOTES-x.x.x.txt from the target location of one of the built assemblies rather than the root of the branch as the version attributes are updated as part of the build.
<source-repository>~/.m2/repository/</source-repository>
<source-repository>http://repo1.maven.org/maven2/</source-repository> <source-repository>http://repository.apache.org/snapshot</source-repository>
<jvm-version>1.5</jvm-version> <jvm-version>1.6</jvm-version>
<default-repository>http://geronimo.apache.org/plugins/geronimo-2.1.3/</default-repository> <default-repository>http://repo1.maven.org/maven2/</default-repository> <default-repository>http://www.ibiblio.org/maven2/</default-repository>
https://svn.apache.org/repos/infra/websites/production/geronimo/content/plugins/geronimo-2.1.3/
http://geronimo.apache.org/plugins/geronimo-2.1.4/
To: "Geronimo Developers List" <dev@geronimo.apache.org> Cc: "Geronimo Users List" <user@geronimo.apache.org> Subject: [VOTE] Release Geronimo Server 2.1.3 RC1 All, I've prepared a release candidate of Geronimo Server 2.1.3 for your review and vote. The source for RC1 is Rev<XXXXX> from the following svn branch: <branch URL> When the release vote is approved, I will svn mv the code to: <future tag URL> The following staging directory contains the server binary assemblies/distributions to be released (framework, tomcat/jetty, Java EE/Minimal, tar/zip) as well as the RELEASE_NOTES, README, NOTICE, LICENSE and source code archives for the release. <distribution dir URL> For your convenience, here are pointers to the JavaEE distributions: <URLs> The maven artifacts for the release can be found here: <staging-repo URL> When the release vote is approved, these maven artifacts will be moved to the m2-ibiblio-rsync-repository at Apache. [ ] +1 Release Geronimo Server 2.1.3 [ ] 0 No opinion [ ] -1 Do not release Geronimo Server 2.1.3 (please provide rationale) The voting will be open for 72 hours or until the tck results are verified, whichever is longer.
To: "Geronimo Developers List" <dev@geronimo.apache.org> Cc: "Geronimo Users List" <user@geronimo.apache.org> Subject: [DISCUSS] Release Geronimo Server 2.1.3 RC1 Discussion thread for "[VOTE] Release Geronimo Server 2.1.3 RC1"
Subject: [RESULTS] Release Geronimo Server 2.1.3 RC1 The vote passed with: [xx] +1 [xx] +0 [xx] -1 I'll start publishing the artifacts, updating the download website with the new release and create a News entry for our website.
Subject: [CANCELED] Release Geronimo Server 2.1.3 RC1 The vote is being canceled due to xxxx and a new release candidate will be created for another vote.
mvn stage:copy -Dsource="http://people.apache.org/<your apache id>/staging-repo/<siteId>" \ -Dtarget="scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository" \ -Dversion=2.1.2 \ -DtargetRepositoryId=apache.releases
The version parameter is currently ignored but specify the correct version anyway. The entire staging repository is synced, not just the given version or the current project.
Also note, this process has been known to have problems at times if a maven version other than 2.0.8 is used.
svn mv SRC-URL DEST-URL -m "Reason for this commit".
The original process in this document was voted on by the Geronimo community. Please formally propose all changes to dev@geronimo.apache.org.
See:
Revised process using maven tools voted on in March 2008. Only major structural changes now require votes.
See: (not yet in archive)
Bookmark this on Delicious Digg this | Privacy Policy - Copyright © 2003-2011, The Apache Software Foundation, Licensed under ASL 2.0. |