Table of Contents |
---|
How to cut a new Apache Empire-db
...
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
but since we are out of incubation the docs are here: http://www.apache.org/dev/release
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 in 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
you have all Maven servers defined in your settings.xml. For more information, please refer to Committer settings. This is what mine looks like:
Code Block xml xml <?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 and http://www.apache.org/dev/release-signing.html
- 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 GIT client installed. See https://git-scm.com/download/win
- you have a the latest Java 1.46.2 x JDK installed and on your shell's path. See http://javawww.sunoracle.com/j2se/1.4.2/download.html.technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html
- you have set the environment variable MAVEN_OPTS=-Xmx512m
- you are using Maven 3.2.0.x or 2.2.1+, as Maven 2.1.x is known to produce wrong gpg pom signatures (see MGPG-14).. See http://maven.apache.org/
Make sure maven
...
pom is setup correctly
Please review the maven release process here:
Publishing Maven Releases to Maven Central Repository - Apache Infrastructure
https://infra.apache.org/publishing-maven-artifacts.html
The following versions of JDK and Maven should be used:
JDK: Java Version 1.8.0_202
Maven: Apache Maven 3.3.9 or later
Creating a new RC
Update the changelog file
Edit CHANGELOG.txt in you favorite editor and add the closed issues for this release. Info can be exported from jira.
Go to: https://issues.apache.org/jira/browse/EMPIREDB/
In the versions due section go to the version you want to release
Click on release notes
Configure release notes to text
Copy the notes to our CHANGELOG.txt
Prepare the release
Make sure your code is up to date, builds, is available in your snapshot repository and has no local changes
Info |
---|
You will be asked about the release versions. Make sure you enter a correct tag: apache-empire-db-[version]-rc[nr]. Once the release vote passes we can then copy this -rcX tag to the final version tag. |
Code Block |
---|
>mvn clean install
...
>mvn clean |
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
Code Block |
---|
#!/bin/sh
JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun"
mvn $@
|
test the script by running this command:
Code Block |
---|
>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
Code Block |
---|
>mvn5 release:clean ... >mvn5>mvn 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 ... |
Wiki Markup |
---|
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:
Code Block |
---|
>mvn5>mvn release:rollback |
Also run a svn diff/revert to make sure your working copy is clean
Perform the release
This step will upload the artifacts the the staging repository
Code Block |
---|
>mvn5>mvn release:perform |
Close the staging repository
...
- and
- log in
- Select "Staging repositories"
- Find the newly created repository and select "Close"
Follow the steps as described on http://maven.apache.org/developers/release/releasing.html (Close the staging repository)
Create
...
Wiki Markup \[TODO\] make sure the release.sh script does not delete existing files?
Distribution checksums
The distribution files are now located in target/checkout/empire-db-dist
In order to create the checksums use:
Code Block |
---|
Code Block |
>cd target/checkout/empire-db-dist (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)
Code Block |
---|
>svn checkout https://svn.apache.org/repos/asf/incubator/empire-db/tags/ > SHATool -H %target%\apache-empire-db-%1.pom > > SHATool -H %target%\apache-empire-db-%1.pom > SHATool -H %target%\apache-empire-db-2.0.5-incubating-rc3 ... >cd %1-dist.tar.gz > SHATool -H %target%\apache-empire-db-2.0.5-incubating-rc3 >./release.sh%1-dist.zip ... Distribution build completedAll Done. Files available 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
Code Block |
---|
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Too many unapproved licenses: 317
|
Upload the Distribution
Finally upload Now upload the generated files + rat report to your apache personal directory.
...
the distribution directory using svn.
...
...
...
as explained here: http://www.apache.org/dev/release#upload-ci
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@.Docs here: http://www.apache.org/dev/release#approving-a-release
The vote mail should look like this:
To: dev@empire-db.apache.orgunmigrated-wiki-markup
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
More info on release requirements can be found here: http://www.apache.org/dev/release#approving-a-releaseThe 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 changes from our previous 2.0.4 -incubating release:
- xxx
- xxx
Changelog:http https://svngit-wip-us.apache.org/viewvc/incubator/repos/asf?p=empire-db/tags/empire-db-parent-2.0.5-incubating/CHANGELOG.txt?revision=797936Subversion tag: https://svn.git;a=blob_plain;f=CHANGELOG.txt;hb=83c8fb2f7ed658aa788ccb49b3d3d4484c107a99
Git tag: https://git-wip-us.apache.org/repos/asf/incubator/empire-db/tags/apache-?p=empire-db-2.0.5-incubating-rc3.git;a=tag;h=6dbaa5a7a70655805385508546f2a3bfb744b70e
Maven staging repository: https://repository.apache.org/content/repositories/empireorgapacheempire-db-staging-035044/
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.
...
Unsuccessful vote: roll back changes on trunk
- Drop the staging repository in nexus
- Update the local code
Use the maven versions plugin to roll back the version update
Code Block > mvn versions:set -DnewVersion=2.0.7-SNAPSHOT -Papache-release -DgenerateBackupPoms=false
- Commit the project
- Go to the create new RC step
Successful vote: 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 -> 4.4-rc1 -> apache-empire-db-2.4.4
Code Block |
---|
git show apache-empire-db-2.4.4-rc1 # copy the commit checksum, in this case 83c8fb2f7ed658aa788ccb49b3d3d4484c107a99 git tag -a apache-empire-db-2.4.4 83c8fb2f7ed658aa788ccb49b3d3d4484c107a99 -m "copy apache-empire-db-2.4.4-rc1 -> apache-empire-db-2. |
...
4. |
...
4" |
Promote the nexus staging files
Log in to nexus as described above,
Go to: https://repository.apache.org and log in
Follow the steps as described on http://maven.apache.org/developers/release/releasing.html
(go to the staging section, right click on the staged release and select promote.release)
Set up new release in JIRA / close old one
...
- Go to https://issues.apache.org/jira/browse/EMPIREDB
- Click on Administer Project /Administration
- Click on Manage versions
- Release current version
- Create new / edit versions if needed
Move the release files to the dist location
...
Docs here: http://www.apache.org/dev/release#upload-ci
- svn checkout https://distGo to /x1/www/www.apache.org/repos/dist/incubatorrelease/empire-db/ empire-db-dist-release
- Create a subdirectory with the version number (i.e. 2.0.5)
- Upload Copy all distribution files from your apache home directory to that directory (.zip, .tar.gz, .asc, .md5, .sha)
- 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)
- scp francisdb@people.apache.org:~/public_html/empire-db/apache-empire-db-* .
- remove old releases:
www.apache.org/dist
should contain only the latest release
http://www.apache.org/dev/release.html#when-to-archive - commit to the subversion repo
- Wait Wait (one day) before files become available on the mirrors
Release to Maven from the staging repository
- Go to: https://repository.apache.org and
- log in
- Select "Staging repositories"
- Find the repository and select "Release"
Update the Empire-db website
this part needs an update as we are out of the incubator/snvpubsub
- Check out or update the Empire-db website source files from
svn checkout https://svn.apache.org/repos/asf/incubator/empire-db/site - Update the doap_Empire-db.rdf file, add new version
- Edit Pages with html editor (I am using Microsoft Expression Web)
- Open page downloaddownloads/latest.htm and copy section with previous release files to downloads/previous.htm.
- Make sure the links to previous versions point tot the archive
- In downloads/latestIn download.htm replace all reference references to the old version number with new version number.
- Commit all changes to svn repo.
- Log on to people.apache.org using ssh
- Goto /x1/www/incubator.apache.org/empire-db
- Run "svn update" command.
- Update news.html
- do a svn delete on javadocs/empire-db
- commit
- recreate the empire-db folder
- fetch the new javadoc jar from http://repo1.maven.org/maven2/org/apache/empire-db/empire-db/x.x.x/empire-db-x.x.x-javadoc.jar
- extract into the javadocs/empire-db folder
- svn add the empire-db folder
- Commit all changes to svn repo.Don't forget to add write permissions of all changed files for group and all users (change from 0x644 to 0x664)
- Wait some time for changes to become available on the mirrors.
...
Send an E-Mail to announce@apache.org starting
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 dev@empire-db.apache.org and user@empire-db.apache.org mailing lists in cc.
Start the mail as follows: "The
Subject: [ANNOUNCE] Apache Empire-db xxx released
The Apache Empire-db team is pleased to announce the release of Apache Empire-db version
...
xxx.
...
Apache Empire-db is a lightweight data access and persistence component for relational databases based on JDBC. http://
...
...
Main improvements listed below:
[add description and list of changes
...
]
Download: http://empire-db.apache.org/downloads/latest.htm
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...