This page is prepared for Apache Avro committers. You need committer rights to create a new Apache Avro release.
Skip this section if this is NOT the first release in a series (i.e. release X.Y.0).
CHANGES.txt
to include the release version and date (use Unreleased
for the date if it is unknown) and remove Trunk (unreleased changes)
.Commit these changes to trunk.
svn commit -m "Preparing for release X.Y.Z" |
Create a branch for the release series:
svn copy https://svn.apache.org/repos/asf/avro/trunk \ https://svn.apache.org/repos/asf/avro/branches/branch-X.Y -m "Branching for X.Y releases" |
CHANGES.txt
to add back in Trunk (unreleased changes)
.share/VERSION.txt
on trunk to X.Y+1.0-SNAPSHOT. Be sure not to leave a trailing newline.Update the version in the Maven POM files to match with
mvn versions:set -DnewVersion=X.Y+1.0-SNAPSHOT -DgenerateBackupPoms=false |
Commit these changes to trunk.
svn commit -m "Preparing for X.Y+1.0 development" |
These operations take place in the release branch.
Check out the branch with:
svn co https://svn.apache.org/repos/asf/avro/branches/branch-X.Y |
CHANGES.txt
to include the release version and date (this change must be committed to trunk and any intermediate branches between trunk and the branch being released).share/VERSION.txt
to be ''avro-X.Y.Z-SNAPSHOT''. Be sure not to leave a trailing newline.Update the version in the Maven POM files to match with
mvn versions:set -DnewVersion=X.Y.Z-SNAPSHOT -DgenerateBackupPoms=false |
Commit these changes.
svn commit -m "Preparing for release X.Y.Z" |
If not already done, merge desired patches from trunk into the branch and commit these changes. You can find the revision numbers using svn log CHANGES.txt
in the branch and in trunk.
cd branch-X.Y svn merge -rR1:R2 ../trunk . svn commit -m "Merge -r R1:R2 from trunk to X.Y branch. Fixes: AVRO-A, AVRO-B." |
share/VERSION.txt
to be ''X.Y.Z''. Be sure not to leave a trailing newline.Update the version in the Maven POM files to match with
mvn versions:set -DnewVersion=X.Y.Z -DgenerateBackupPoms=false |
Update the version number in lang/c/version.sh
(the variables libavro_micro_version
, libavro_interface_age
and libavro_binary_age
) according to the libtool versioning rules as described in that file. Note the libtool version number is completely unrelated to the Avro release version number.
Commit these changes.
svn commit -m "Preparing to build X.Y.Z" |
Tag the release candidate (R is the release candidate number):
svn copy https://svn.apache.org/repos/asf/avro/branches/branch-X.Y \ https://svn.apache.org/repos/asf/avro/tags/release-X.Y.Z-rcR -m "Avro X.Y.Z-rcR release." |
Unless you have set up the required dependencies to build Avro for all languages, the following should be run inside a Docker container (see BUILD.txt for instructions).
Build the release & run unit tests.
./build.sh clean dist test |
Sign the release (see Step-By-Step Guide to Mirroring Releases for more information).
./build.sh sign |
To sign a release, your key must be present in the dist/KEYS file. See the Apache guide to Signing Releases for more details. Also, if you've updated the dist/KEYS file, be sure to update the public Apache KEYS file as well:
ssh people.apache.org cd /www/www.apache.org/dist/avro svn up |
Copy release files to the public staging area https://dist.apache.org/repos/dist/dev/avro/
svn co https://dist.apache.org/repos/dist/dev/avro/ avro-dev-dist mkdir avro-dev-dist/avro-X.Y.Z-rcR cp -pr avro/dist/* avro-dev-dist/avro-X.Y.Z-rcR cd avro-dev-dist svn add avro-X.Y.Z-rcR svn commit -m "Artifacts for Avro X.Y.Z RCR" |
Stage two versions of Java artifacts to the Maven repository:
mvn clean -P dist,sign deploy -DskipTests=true -Dhadoop.version=1 -Dgpg.passphrase=XXX -Davro.version=X.Y.Z mvn clean -P dist,sign deploy -DskipTests=true -Dgpg.passphrase=XXX -Davro.version=X.Y.Z |
Find the Staging Repository, and close it.
Once three PMC members have voted for a release, it may be published.
Tag the release:
svn move https://svn.apache.org/repos/asf/avro/tags/release-X.Y.Z-rcR \ https://svn.apache.org/repos/asf/avro/tags/release-X.Y.Z -m "Avro X.Y.Z release." |
Copy release files to the release repository.
svn copy https://dist.apache.org/repos/dist/dev/avro/avro-X.Y.Z-rcR \ https://dist.apache.org/repos/dist/release/avro/avro-X.Y.Z -m "Avro X.Y.Z release." |
The release directory usually contains just two releases, the most recent from two branches, with a link named 'stable' to the most recent recommended version.
svn co https://dist.apache.org/repos/dist/release/avro/ avro-release-dist cd avro-release-dist svn rm avro-A.B.C; rm stable ln -s avro-X.Y.Z stable svn commit -m "Avro X.Y.Z release." |
Publish Python artifacts to PyPI. To do this you'll need an account on PyPi, and write access to the Avro package - ask the existing owners for permission if you don't have it.
mkdir -p tmp/py cd tmp/py tar xzf ../../dist/py/avro-X.Y.X.tar.gz cd avro-X.Y.Z python setup.py sdist upload |
Publish Python3 artifacts to PyPI.
mkdir -p tmp/py3 cd tmp/py3 tar xvf ../../dist/py3/avro-python3-X.Y.Z.tar.gz cd avro-python3-X-Y-Z python3 ./setup.py sdist upload |
Publish Ruby artifacts to RubyGems. Again, you'll need an account and you need to be an owner.
gem push dist/ruby/avro-X.Y.Z.gem |
Prepare to edit the website.
svn co https://svn.apache.org/repos/asf/avro/site |
author/content/xdocs/site.xml
.author/content/xdocs/releases.xml
.Regenerate the site, review it, then commit it. Note that Forrest 0.9 is easiest (not currently in the Docker image), since it doesn't require Java 5.
cd site ant firefox publish/index.html svn commit -m "Updated site for release X.Y.Z." |
Copy the new release docs to website and update the docs/current
link:
tar xzf dist/avro-doc-X.Y.Z.tar.gz mv avro-doc-X.Y.Z ../site/publish/docs/X.Y.Z cd ../site/publish svn add X.Y.Z rm current ln -s X.Y.Z current svn commit -m "Adding documentation for release X.Y.Z." |
share/VERSION.txt
to be ''avro-X.Y.N-SNAPSHOT'', where ''N'' is one greater than the release just made.Update the version in the Maven POM files to match with
mvn versions:set -DnewVersion=X.Y.N-SNAPSHOT -DgenerateBackupPoms=false |