This document explains how to cut a new empire-db release. Since we normally do this in Linux I expect you to have a Linux enironment at hand. For windows users Cygwin might be a solution. This document is based on the Maven release documentation.
The general incubator release guide is available here: http://incubator.apache.org/guides/releasemanagement.html
The apache central maven repo release guide is available here: http://www.apache.org/dev/publishing-maven-artifacts.html
The release process takes about one hour to perform, don't do this is a hurry as it is important to perform each step in the correct order!
Make sure your system is set up correctly and that you have the needed credentials
<?xml version="1.0"?> <settings> <servers> <!-- To publish a snapshot of some part of Maven --> <server> <id>apache.snapshots.https</id> <username>francisdb</username> <password>xxx</password> </server> <!-- To publish a website of some part of Maven --> <server> <id>apache.website</id> <username>francisdb</username> <filePermissions>664</filePermissions> <directoryPermissions>775</directoryPermissions> </server> <!-- To stage a release of some part of Maven --> <server> <id>apache.releases.https</id> <username>francisdb</username> <password>xxx</password> </server> <!-- To stage a website of some part of Maven --> <server> <id>stagingSite</id> <!-- must match hard-coded repository identifier in site:stage-deploy --> <username>francisdb</username> <filePermissions>664</filePermissions> <directoryPermissions>775</directoryPermissions> </server> </servers> <profiles> <profile> <id>apache-release</id> <properties> <gpg.passphrase>xxx</gpg.passphrase> </properties> </profile> </profiles> </settings> |
Create a mvn5 shell script and add it to your PATH. This script makes sure you use Java 5 to build the release.
/usr/bin/mvn5
#!/bin/sh JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun" mvn $@ |
test the script by running this command:
>mvn5 --version Apache Maven 2.2.1 (r801777; 2009-08-06 20:16:01+0100) Java version: 1.5.0_18 Java home: /usr/lib/jvm/java-1.5.0-sun-1.5.0.18/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux" version: "2.6.28-15-generic" arch: "amd64" Family: "unix" |
Make sure that the Java version is 1.5.x!
Make sure your code is up to date, builds, is available in your snapshot repository and has no local changes
|
>mvn5 clean install ... >mvn5 clean release:clean ... >mvn5 release:prepare -Papache-release ... [INFO] Checking dependencies and plugins for snapshots ... What is the release version for "Apache Empire-db Parent"? (org.apache.empire-db:empire-db-parent) 2.0.5-incubating: : What is SCM release tag or label for "Apache Empire-db Parent"? (org.apache.empire-db:empire-db-parent) empire-db-parent-2.0.5-incubating: : apache-empire-db-2.0.5-incubating-rc3 What is the new development version for "Apache Empire-db Parent"? (org.apache.empire-db:empire-db-parent) 2.0.6-incubating-SNAPSHOT: : [INFO] Transforming 'Apache Empire-db Parent'... [INFO] Updating empire-db to 2.0.5-incubating ... |
INFO: If during this prepare you get some subversion related errors, try to do an "svn update" and calling "mvn release:prepare" again. This will then continue the release preparation from where it stopped. You might have to do this multiple times!
If anything goes wrong during the release you can do a rollback:
>mvn5 release:rollback |
This step will upload the artifacts the the staging repository
>mvn5 release:perform |
Go to: https://repository.apache.org and log in
Follow the steps as described on http://maven.apache.org/developers/release/releasing.html (Close the staging repository)
>cd target/checkout/empire-db-dist (we want to have the same artifacts in the dist as in the repo) >./checksums.sh ... All Done. Files available in ./target |
OR (if the previous failed/is not possible any more)
this might not work, not tested, probably creates new artifacts instead of using existing ones
>svn checkout https://svn.apache.org/repos/asf/incubator/empire-db/tags/apache-empire-db-2.0.5-incubating-rc3 ... >cd apache-empire-db-2.0.5-incubating-rc3/empire-db-dist/ >mvn5 clean install -Papache-release >./checksums.sh ... All Done. Files available in ./target |
Now upload the generated files + rat report to your apache personal directory.
>cd target/ >scp * people.apache.org:~/public_html/empire-db |
Now remove the .pom on the remote machine
>ssh people.apache.org >rm public_html/empire-db/apache-empire-db*.pom* >exit |
As we are currently in the incubator we need two voting rounds. Fist we need a non-binding community vote on the dev@ list. After that we need a IPMC / Mentor vote on general@. It's also a good idea to point our mentors to that vote by ding a post on private@.
The vote mail should look like this:
Subject: \[VOTE\] Release Apache Empire-db 2.0.5-incubating (rc3) |
Hi,
We have just prepared a 2.0.5-incubating release and we are now looking for approval of the PMC to publish the release. Once the community approves the release we will have a second binding release round for IPMC members.
OR
The Apache Empire-db community has approved the 2.0.5-incubating release and we are now looking for approval of the IPMC to publish the release.
These are the major changes from our previous 2.0.4-incubating release:
- xxx
- xxx
Subversion tag: https://svn.apache.org/repos/asf/incubator/empire-db/tags/apache-empire-db-2.0.5-incubating-rc3
Maven staging repository: https://repository.apache.org/content/repositories/orgapacheempire-db-044/
Distribution files are located here http://people.apache.org/~francisdb/empire-db/
Rat report for the tag is available here: http://people.apache.org/~francisdb/empire-db/rat.txt
Vote open for 72 hours.
[ ] +1
[ ] +0
[ ] -1
Make sure you provide the correct paths!
Now wait for the vote to succeed.
> mvn versions:set -DnewVersion=2.0.7-incubating-SNAPSHOT -Papache-release |
Just use your prefered subversion tool to copy the rc tag to the final release tag
apache-empire-db-2.0.5-incubating-rc3 -> apache-empire-db-2.0.5-incubating
Log in to nexus as described above, go to the staging section, right click on the staged release and select promote.
Send an E-Mail to announce@apache.org
Important: The e-mail must be sent from an apache e-mail account. It is sufficient if the from address contains an apache mail account.
Put empire-db-dev and empire-db-user mailing lists in cc.
Start the mail as follows:
Subject: \[ANNOUNCE\] Apache Empire-db xxx released |
The Apache Empire-db team is pleased to announce the release of Apache Empire-db version 2.0.5-incubating.
Apache Empire-db is a lightweight data access and persistence component for relational databases based on JDBC. http://incubator.apache.org/empire-db
\[add description and list of changes\]Thank you for your interest in Apache Empire-db!
The Apache Empire-db Team.
Maybe send the release to some other sites as well (dzone) / do a blog post about it...