How to cut a new Apache Empire-db (incubator) release.
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 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!
Before you get started
Setup
Make sure your system is set up correctly and that you have the needed credentials
- you have all Maven servers defined in your settings.xml. For more information, please refer to Committer settings. This is what mine looks like:
<?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>
- you have created your GPG keys. For more information, please refer to Making GPG Keys.
- you have a GPG client installed and on your shell's path. See http://www.gnupg.org/
.
- you have a Subversion 1.5+ client installed and on your shell's path. See http://subversion.tigris.org/
.
- you have a Java 1.4.2 JDK installed and on your shell's path. See http://java.sun.com/j2se/1.4.2/download.html
.
- you have set the environment variable MAVEN_OPTS=-Xmx512m
- you are using Maven 2.0.x or 2.2.1+, as Maven 2.1.x is known to produce wrong gpg pom signatures (see MGPG-14).
Make sure maven uses Java 5
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!
Creating a new RC
Prepare the release
>mvn5 release:clean ... >mvn5 release:prepare ... [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 ...
You will be asked about the release versions. Make sure you enter a correct tag: apache-empire-db-[version]-incubating-rc[nr]. Once the release vote passes we can then copy this -rcX tag to the final version tag.
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
Perform the release
This step will upload the artifacts the the staging repository
>mvn5 release:perform
Close the staging repository
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)
Create the distribution
[TODO] make sure the release.sh script does not delete existing files?
>cd target/checkout (we want to have the same artifacts in the dist as in the repo) >./release.sh ... Distribution build completed in target/dist
OR (if the previous failed/is not possible any more)
>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 >./release.sh ... Distribution build completed in target/dist
The script will first ask your GPG passphrase and then generate the distribution and the rat report.
You might see this. This is buggy reporting from the rat plugin so just ignore. Check the rat report manually at target/dist/rat.txt
[ERROR] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Too many unapproved licenses: 317
Now upload the generated files + rat report to your apache personal directory.
>cd target/dist >scp * people.apache.org:~/public_html/empire-db
Initiate a vote
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 change 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/empire-db-staging-035/
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!
Promoting the RC as release
Copy RC tag to release tag
TODO document
Promote the nexus staging files
TODO document
Move dist files to the apache dist location
TODO document
Update site to point to the new dist files
TODO while you are at it add link from site to our wiki http://cwiki.apache.org/confluence/display/empiredb/Index
TODO document
Send mails to user list / general apache list? maybe to some other sites as well (dzone) / do a blog about it...
TODO document