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 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 from Sonatype and the Maven GPG Plugin usage page. 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-${RELEASE_VERSION}-incubating-SNAPSHOT-source-release.tar.gz under the target directory.
Prepare Release Artifacts
- 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/.
- 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.
- Close the staging repository at https://repository.apache.org
- Login to https://repository.apache.org.
- Go to “Staging Repos”.
- 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.
- Click on the “Close” button at top, and enter a brief description, such as “Apache Tephra N.N.N release”.
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 open 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
- Create a vote in the general@ mailing list for the IPMC to vote for the release.
- 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.
- 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:
- Login to https://repository.apache.org.
- Go to “Staging Repos”.
- 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.
- 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):
- Add a release for the next version, if necessary
- Set a release date and release the released version
Release the source tarball:
- 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@. Here is a template for the announce email:
Subject: [ANNOUNCE] Apache Tephra-${RELEASE_VERSION}-incubating released ================================================================================== Hi All, The Apache Tephra team is excited to announce the latest release of Apache Tephra-${RELEASE_VERSION}-incubating. This is the [Nth] release of Apache Tephra. Apache Tephra is a transaction engine for distributed data stores like Apache HBase. It provides ACID semantics for concurrent data operations that span over region boundaries in HBase using Optimistic Concurrency Control. The release artifacts are available at http://www.apache.org/dyn/closer.cgi/incubator/tephra/${RELEASE_VERSION}-incubating/src Maven artifacts have also been made available on repository.apache.org. We would like to thank all the contributors that made this release possible. Thanks, The Apache Tephra (incubating) Team ===== *Disclaimer* Apache Tephra is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the name of Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process 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.
Update Website with the new Release
Build javadocs for the release version using the command below. The javadocs for the release version will be under target/site/apidocs:
git pull git checkout v${RELEASE_VERSION}-incubating mvn clean javadoc:aggregate -DskipTests
Merge master into the site branch:
git checkout site git merge --no-ff origin/master
Copy over the release javadocs to src/site/resources:
cp -r target/site/apidocs src/site/resources/apidocs-${RELEASE_VERSION}-incubating
Create a corresponding release markdown file src/site/markdown/releases/${RELEASE_VERSION}-incubating.md.
Update src/site/site.xml to include the new release
- Update section “Documentation” to point to the javadocs for the release version.
- Update section “Releases” to point to the new release markdown.
Update the following sections of documentation if needed
- “Getting Started” section in site/markdown/GettingStarted.md
- “Hadoop/HBase Environment” section in site/markdown/index.md
Build the website:
mvn clean site -P site -DskipTests
Verify the website:
open target/site/index.html
Checkout Tephra site from https://svn.apache.org/repos/asf/incubator/tephra/site if needed:
svn co https://svn.apache.org/repos/asf/incubator/tephra [working-dir]/tephra-site
Rsync the files in target/site to https://svn.apache.org/repos/asf/incubator/tephra/site:
cd [tephra-src-git-dir] rsync -a target/site [working-dir]/tephra-site cd [working-dir]/tephra-site
Verify the website again:
open site/index.html
Commit the site changes:
svn add [new-release-dirs] svn commit -m "Apache Tephra site for release N.N.N"
Commit the site changes back to git:
cd [tephra-src-git-dir] git commit -m "Update site for release N.N.N" git push origin site