You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 73 Next »

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 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!

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

Make sure your code is up to date, builds, is available in your snapshot repository and has no local changes

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.

>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

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)

Upload the distribution

>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

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

Changelog: http://svn.apache.org/viewvc/incubator/empire-db/tags/apache-empire-db-2.0.5-incubating-rc3/CHANGELOG.txt?view=co

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!
Now wait for the vote to succeed.

Promoting the RC as release

Copy RC tag to release tag

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

Promote the nexus staging files

Log in to nexus as described above, go to the staging section, right click on the staged release and select promote.

Set up new release in JIRA / close old one

TODO document

Move the release files to the dist location

  1. Log on to people.apache.org
  2. Go to /x1/www/www.apache.org/dist/incubator/empire-db
  3. Create a subdirectory with the version number (i.e. 2.0.5)
  4. Upload all distribution files to that directory (.zip, .tar.gz, .asc, .md5, .sha)
  5. Possibly change write permissions of that directory and all files to allow group members to add / modify files (although they should never ever change again)
  6. Wait (one day) before files become available on the mirrors

Update the Empire-db website

  1. Check out the Empire-db website source files from https://svn.apache.org/repos/asf/incubator/empire-db/site
  2. Edit Pages with html editor (I am using Microsoft Expression Web)
  3. Open page download.htm and copy section with previous release files to previous.htm.
  4. In download.htm replace all reference to old version number with new version number.
  5. Commit all changes to svn repo.
  6. Log on to people.apache.org using ssh
  7. Goto /x1/www/incubator.apache.org/empire-db
  8. Run "svn update" command.
  9. Don't forget to add write permissions of all changed files for group and all users (change from 0x644 to 0x664)
  10. Wait some time for changes to become available on the mirrors.

TODO add documentation on how to update online javadoc

Announce release

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...


  • No labels