This page describes how to make a release of Provisionr. It's loosely based on the release guide for Apache Whirr
First time as a release manager
Go through the Release Signing instructions and prepare your key.
Add your key ID to id.apache.org and to the KEYS file at https://dist.apache.org/repos/dist/release/incubator/provisionr (svn repository)
Make sure you have access to repository.apache.org
We are building new releases from the master branch unless there is a good reason to branch from an existing tag and backport changes. As a general rule all new code goes to master first.
Run All Tests
Before starting a vote we need to make sure the master branch is in a good shape. We have to three types of tests: unit, integration & live.
The unit & integration tests are executed during the normal Maven build. The live tests require cloud provider credentials and they can be executed by enabling the with-live-tests profile or by using some special bash scripts as documented below.
Start by configuring your cloud provider credentials in ~/.m2/settings.xml like this:
Run all the unit & integration tests with the following command:
mvn -Pwith-assembly clean install
Run all the tests for individual Activiti activities for a specific provider with the following command:
Test the pool management process as a whole for a specific provider with the following command:
Check the Release Notes
JIRA has the ability to automatically generate release notes.
Make sure the list of closed issues is accurate and nothing is missing. You can cross-check with the git log as needed.
Build and Deploy Maven Artifacts to Nexus Staging
Add your Apache Nexus repository credentials encrypted to your ~/.m2/settings.xml file like this. You will have to create a ~/.m2/settings-security.xml on the way as documented.
And run the release script that will automatically change the version numbers and upload the artifacts to Nexus staging:
./scripts/release.sh 0.X.0-incubating 0.Y.0-incubating-SNAPSHOT
git push && git push --tags
Login to https://repository.apache.org using your Apache credentials. Click on Staging on the left. Then click on org.apache.provisionr in the list of repositories. In the panel below you should see an open repository that is linked to your username and IP. Select this repository and click Close. This will close the repository from future deployments and make it available for others to view.
Copy Binary and Source Release Artifacts
Sign, checksum and copy the source and binary .tar.gz file from karaf/assembly/target/ to people.apache.org:~/public_html/provisionr-0.X.0-incubating-candidate-Y
Download the artifacts and check the signatures, use Rat to check the licenses, create a pool from a template or with some arbitrary packages (see README for instructions).
Quick start guide (will be migrated soon): https://github.com/axemblr/axemblr-provisionr/wiki/Axemblr-Provisionr-in-5-Minutes
The following email thread may also be useful: How to build and test a release candidate (0.4.0-incubating)
Run the Vote
Generic email template:
To: "Provisionr Developers List" <firstname.lastname@example.org>
Subject: [VOTE] Release Provisionr version X.Y.Z
This is the first release candidate for Apache Provisionr (incubating), version X.Y.Z.
It fixes the following issues:
*** Please download, test and vote by [3 working days after sending].
Note that we are voting upon the source (tag), binaries are provided for convenience.
Source and binary files:
Maven staging repo:
https://repository.apache.org/content/repositories/orgapacheprovisionr-[YOUR REPOSITORY ID]
The tag to be voted upon:
Provisionr's KEYS file containing PGP keys we use to sign the release:
The release needs 3 +1's from PPMC (email@example.com) and 3 binding +1's from the IPMC (firstname.lastname@example.org)
If the vote was successful the first step is to login to repository.apache.org and click the Release button on the staging repository. This will eventually sync the artifacts to Maven Central. You can check at search.maven.org
Second step is to commit the artifacts from people.apache.org:~/public_html/provisionr-X.Y.Z-incubating-candidate-0 to https://dist.apache.org/repos/dist/release/incubator/provisionr/provisionr-X.Y.Z-incubating and update the symlink as needed.
Before announcing the release you should mark it as released on JIRA (Versions), wait for Maven Central to sync and for mirrors (it takes a few hours at least - all sync from http://www.apache.org/dist/incubator/provisionr/).
Announcing the release
Cc: dev <email@example.com>
Subject: [ANNOUNCE] Apache Provisionr 0.4.0-incubating released
The Apache Provisionr team is pleased to announce the release of version
0.4.0-incubating from the Apache Incubator.
Apache Provisionr is an effort to develop a service that can be used to
create and manage pools of virtual machines on multiple clouds. Our focus
is on semi-automated workflows, cloud portability and on providing a robust
foundation for configuration and higher level management.
You can download the archives from any Apache mirror:
All the bundles are also available from Maven Central if you want to
integrate Apache Provisionr in your own custom Karaf distribution.
For general information on Apache Provisionr, please visit the project
Also make sure you check the following Quick Start Guide on the wiki:
Apache Provisionr is an effort undergoing incubation at the Apache Software
Foundation (ASF), sponsored by the Incubator PMC.
Incubation is required of all newly accepted projects until a further review
indicates that the infrastructure, communications, and decision making
have stabilized in a manner consistent with other successful ASF projects.
While incubation status is not necessarily a reflection of the completeness
or stability of the code, it does indicate that the project has yet to be
fully endorsed by the ASF.
The Provisionr Team