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.
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
>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 valling "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:
>mvn release:rollback