blob: 708efe3e101626fdbceee30172fbf07836d41b5f [file] [log] [blame]
================
Releasing Tephra
================
This page describes the step-by-step process of how to perform an official Tephra version release,
including deploying the release artifacts to Maven repositories and the additional administrative
steps to complete the release process.
Prerequisites
=============
Maven Settings File
-------------------
Prior to performing a Tephra release, you must have an entry such as this in your
``~/.m2/settings.xml`` file to authenticate when deploying the release artifacts::
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"
xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<servers>
<server>
<id>sonatype.snapshots</id>
<username>USERNAME</username>
<password>PASSWORD</password>
</server>
<server>
<id>sonatype.release</id>
<username>USERNAME</username>
<password>PASSWORD</password>
</server>
</servers>
</settings>
Replace ``USERNAME`` and ``PASSWORD`` with the correct values for your user account. See the
`Maven Encryption Guide <http://maven.apache.org/guides/mini/guide-encryption.html>`_ for details
on how to avoid storing the plaintext password in the settings.xml file.
PGP Key
-------
You will also need to have created a PGP (or GPG) key pair, which will be used in signing the release
artifacts. For more information on using the Maven GPG plugin, see this `introduction
<http://blog.sonatype.com/2010/01/how-to-generate-pgp-signatures-with-maven/>`_ from Sonatype and
the Maven GPG Plugin `usage page
<https://maven.apache.org/plugins/maven-gpg-plugin/usage.html>`_. You may also want to run
gpg-agent in order to avoid being prompted multiple times for the GPG key passphrase when
performing a release.
Performing the Release
======================
Ensure Local Branch is Up-to-date
---------------------------------
First, make sure your local copy of the ``develop`` branch is up-to-date with all changes::
git checkout develop
git pull
Create the Release Branch
-------------------------
Next, create a release branch from ``develop``::
git checkout -b release/N.N.N
replacing ``N.N.N`` with the desired release version.
Prepare the Release
-------------------
While on the release branch, prepare the release::
mvn clean release:prepare -P release
This will prompt you for the release version and the git tag to use for the release. By
convention, we use ``vN.N.N`` for the release tag (ie. v0.6.0 for release 0.6.0).
Perform the Release
-------------------
Perform the release by running::
mvn release:perform -P release
This will checkout the source code using the release tag, build the release and deploy it to the
oss.sonatype.org repository.
Release the Staging Repository in Artifactory
---------------------------------------------
Release the artifact bundle in Artifactory:
1. Login to https://oss.sonatype.org (you will need to use the same credentials you have
configured in your ``~/.m2/settings.xml`` file).
2. Go to "Staging Repos".
3. Find the "comcontinuuity" repo with the Tephra release. Be sure to expand the contents of the
repo to confirm that it contains the correct Tephra artifacts.
4. Click on the "Release" button at top, and enter a brief description, such as "Tephra N.N.N
release".
Update Git Branches
-------------------
After the release is complete, update the other git branches with the release changes::
git checkout master
git merge release/N.N.N
git push origin master
git checkout develop
git merge master
git push origin develop
Announcing and Completing the Release
=====================================
Mark the release as complete in JIRA (in the Tephra Administration section):
1. Add a release for the next version, if necessary
2. Set a release date and release the released version
Create a new release in github:
1. Create a new release based on the release tag used
2. Add the release description
3. Upload release artifacts from ``tephra-distribution/target/``
Finally, announce the release on the Tephra mailing lists: tephra-user@googlegroups.com, tephra-dev@googlegroups.com