blob: f8d8322a300149396f0ed6ab4d3d1a73165a4cba [file] [log] [blame]
=======================
Releasing Apache Tephra
=======================
This page describes the step-by-step process of how to perform an official Apache 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 an Apache 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>apache.snapshots.https</id>
<username>USERNAME</username>
<password>PASSWORD</password>
</server>
<server>
<id>apache.releases.https</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 ``master`` branch is up-to-date with all changes::
git checkout master
git pull
Create the Release Branch
-------------------------
Next, create a release branch from ``master``::
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 apache-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 apache-release
This will checkout the source code using the release tag, build the release and deploy it to the
repository.apache.org repository. Also it creates a source tarball
``apache-tephra-0.8.0-incubating-SNAPSHOT-source-release.tar.gz`` in ``target`` directory.
Prepare Release Artifacts
-------------------------
1. Checkin the source release tarball, together with the signature, md5 and sha512 files found in
``target/`` directory
to ``dist.apache.org/repos/dist/dev/incubator/tephra/${RELEASE_VERSION}-incubating-rc1/src/``.
2. Create a CHANGES.txt file to describe the changes in the release and checkin the file to
``dist.apache.org/repos/dist/dev/incubator/tephra/${RELEASE_VERSION}-incubating-rc1/CHANGES.txt``.
3. Close the staging repository at https://repository.apache.org
Update POM Version in master
----------------------------
Update the POMs in ``master`` by::
git checkout master
git merge release/N.N.N
git push origin master
Vote for the Release in Dev Mailing List
----------------------------------------
Create a vote in the dev@tephra mailing list, and wait for 72 hours for the vote result.
Here is a template for the email::
Subject: [VOTE] Release of Apache Tephra-${RELEASE_VERSION}-incubating [rc1]
============================================================================
Hi all,
This is a call for a vote on releasing Apache Tephra ${RELEASE_VERSION}-incubating, release candidate 1. This
is the [Nth] release of Tephra.
The source tarball, including signatures, digests, etc. can be found at:
https://dist.apache.org/repos/dist/dev/incubator/tephra/${RELEASE_VERSION}-incubating-rc1/src
The tag to be voted upon is v${RELEASE_VERSION}-incubating:
https://git-wip-us.apache.org/repos/asf?p=incubator-tephra.git;a=shortlog;h=refs/tags/v${RELEASE_VERSION}-incubating
The release hash is [REF]:
https://git-wip-us.apache.org/repos/asf?p=incubator-tephra.git;a=commit;h=[REF]
The Nexus Staging URL:
https://repository.apache.org/content/repositories/orgapachetephra-[STAGE_ID]
Release artifacts are signed with the following key:
[URL_TO_SIGNER_PUBLIC_KEY]
KEYS file available:
https://dist.apache.org/repos/dist/dev/incubator/tephra/KEYS
For information about the contents of this release, see:
https://dist.apache.org/repos/dist/dev/incubator/tephra/${RELEASE_VERSION}-incubating-rc1/CHANGES.txt
Please vote on releasing this package as Apache Tephra ${RELEASE_VERSION}-incubating
The vote will be open for 72 hours.
[ ] +1 Release this package as Apache Tephra ${RELEASE_VERSION}-incubating
[ ] +0 no opinion
[ ] -1 Do not release this package because ...
Thanks,
[YOUR_NAME]
Consolidate Vote Result
-----------------------
After the vote is up for 72 hours and having at least three +1 binding votes and no -1 votes,
close the vote by replying to the voting thread. Here is a template for the reply email::
Subject: [RESULT][VOTE] Release of Apache Tephra-${RELEASE_VERSION}-incubating [rc1]
==================================================================================
Hi all,
After being opened for over 72 hours, the vote for releasing Apache Tephra
${RELEASE_VERSION}-incubating passed with n binding +1s and no 0 or -1.
Binding +1s:
[BINDING_+1_NAMES]
I am going to create a vote in the general@ list.
Thanks,
[YOUR_NAME]
Vote for the Release from IPMC
------------------------------
1. Create a vote in the general@ mailing list for the IPMC to vote for the release.
2. Wait for 72 hours for the vote result. Use the same template as the dev vote, with the addition
of links to the dev vote and result mail thread.
3. After the vote in general@ is completed with at least three +1 binding votes, close the vote by
replying to the voting thread.
Release the Staging Repository in Artifactory
---------------------------------------------
Release the artifact bundle in Artifactory:
1. Login to https://repository.apache.org.
2. Go to "Staging Repos".
3. Find the "orgapachetephra" 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 "Apache Tephra N.N.N
release".
Announcing and Completing the Release
=====================================
Mark the release as complete in JIRA (in the Apache Tephra Administration section):
1. Add a release for the next version, if necessary
2. Set a release date and release the released version
Release the source tarball:
1. Copy the release artifacts and CHANGES.txt from the dev to release directory at
``dist.apache.org/repos/dist/release/incubator/tephra/${RELEASE_VERSION}-incubating``
Finally, announce the release on the mailing lists: dev@tephra and announce@