How to create and announce an ActiveMQ release. This release is based on General guide for releasing Maven-based project at Apache , so be sure to check it out before continuing and meet all prerequisites.
Maven 2 Setup
Before you deploy anything to the maven repository using Maven 2, you should configure your ~/.m2/settings.xml file
so that the file permissions of the deployed artifacts are group writeable. If you do not do this, other developers will not able to overwrite your SNAPSHOT releases with newer versions.
<settings>
...
<servers>
<server>
<id>apache.snapshots.https</id>
<username>dejanb</username>
</server>
<!-- To publish a website of some part of Maven -->
<server>
<id>apache.website</id>
<username>dejanb</username>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
<!-- To stage a release of some part of Maven -->
<server>
<id>apache.releases.https</id>
<username>dejanb</username>
</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>dejanb</username>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
</server>
</servers>
...
</settings>
It is also essential that you configure your umask to 2 on people.apache.org for non-interactive login. If your shell is tcsh you can edit .cshrc to include
Other shell initialization files may interfere with this setting but if this is the only umask setting it appears to work. Instructions for other shells would be welcome.
Additional local configuration for using release and staging plugins.
To effectively use the release and staging plugins you need some information about where the staging will happen and signing information for gpg. Your ~/.m2/settings.xml should contain a profile like this:
<settings>
<profiles>
<profile>
<id>apache-release</id>
<properties>
<gpg.passphrase>secretPhrase</gpg.passphrase>
</properties>
</profile>
</profiles>
...
</settings>
Creating the ActiveMQ Release
The release plugin will prompt for a release version, tag and next release version. Use a three digit release version of the form: 5.x.x and for the tag use a string of the form: activemq-5.x.x. The next version string should use the two digit from: 5.x-SNAPSHOT as this can be consistent for future SNAPSHOT releases.
Verify the to-be-released version identifier exists in the META-INF/spring.schemas mappings file AND activemq-osgi/src/main/resources/META-INF/spring.schemas file, if not add it and commit. It should contain:
http\://activemq.apache.org/schema/core/activemq-core-${pom.version}.xsd=activemq.xsd
Verify headers with rat
mvn -e apache-rat:check
grep -e ' !?????' target/rat.txt -- will show any files without licenses
Do a release dry run to check for problems
mvn release:prepare -DdryRun=true
Check that you are happy with the results. The poms for the proposed tags will be in pom.xml.tag. When you like the results, clean up:
Prepare the release
This will create the tag in git and leave various stuff around locally to direct the perform phase.
Make a local copy of the release configuration in case something goes wrong
cd ..
cp -r activemq-release activemq-release-prepared
cd activemq-release
Perform the release to the staging repo
This uses both the activemq release profile which directs building source jars, javadoc jars, and signing everything, and also the settings release profile that says where to
put stuff and how to sign it.
- Close the staging repository
Quote from the Maven release guide for Apache projectsLogin to https://repository.apache.org using your Apache LDAP credentials. Click on "Staging". Then click on "maven" in the list of repositories. In the panel below you should see an open repository that is linked to your username and ip. Right click on this repository and select "Close". This will close the repository from future deployments and make it available for others to view. If you are staging multiple releases together, skip this step until you have staged everything. Enter the name and version of the artifact being released in the "Description" field and then click "Close". This will make it easier to identify it later.
See the image in the original guide for more info. - Verify staged artifacts
Quote from the original guideIf you click on your repository, a tree view will appear below. You can then browse the contents to ensure the artifacts are as you expect them. Pay particular attention to the existence of *.asc (signature) files. If the you don't like the content of the repository, right click your repository and choose "Drop". You can then rollback your release and repeat the process.
Note the repository URL, you will need this in your vote email.
Build the site from the tag that release:perform checked out into target/checkout in the previous step.
Note that the -Prelease profile is needed to specify the profile in settings.xml that configures the staging location.
cd target/checkout
mvn site -Prelease
Populate the Javadocs site in svn
Stage the official release artifacts in the SVN dist dev area for folks to test and vote on, using the helper script already in the repo:
- Call a vote on the dev list, listing the great new features of the release.
After the vote passes
- Promote the release (i.e. release the staging repository): login to https://repository.apache.org, navigate to the staging repository and click the "release" button.
Copy the staged release files from the SVN dist dev folder to the SVN dist release folder: https://dist.apache.org/repos/dist/release/activemq/
Populate the schema site in svn
- Continue with the Announcing section below
- Created a in progress wiki page for the next release
- Remove any releases from the dist site that are no longer supported and update the wiki page for that release to point to the archives for downloads.
Announcing the ActiveMQ Release
- Perform a release in JIRA and create a new release version in JIRA.
- Move unresolved issues to the next release first, in a bulk (do not send email) update
- You might also want to search for resolved/closed issues with no fix version just in case
- Create a download page for the release in the WIKI similar like the ActiveMQ 5.3.0 Release; also update the main Download page as appropriate
- Update the Xml Reference page with a link to the HTML and XSD
- Update latest release link on home page
- Change the links for the prior release to reference the archive (at http://archive.apache.org/dist/activemq/); otherwise, users will not be able to locate the older release for download
- Update QuickLinks and JavaDocs pages
- Mail the dev & user lists
- Post a news entry on the WIKI
- tweet
- Have a beer!