...
Check out the branch with:
No Format git checkout branch-X.Y
Update the version:
No Format mvn versions:set -DnewVersion=X.Y.Z -DgenerateBackupPoms=false
- Update the version number in
share/VERSION.txt
to beX.Y.Z
. Be sure NOT to leave a trailing newline. - Update the version number in
lang/js/package.json
toX.Y.Z
. Update or regeneratelang/js/package-lock.json
. - Update the version number in
pom-XXXX.xml
used for unit tests in thelang/java/maven-plugin/src/test/resources
directory too. - Update the versions in
doc/examples/java-examplesexample
anddoc/examples/
.mr
-examplesexample
- Update the version number in
Commit the update to the release branch.
No Format git commit -am "Preparing for release X.Y.Z"
- Add the fix version X.Y.Z to the Avro JIRA
If not already done, cherry-pick desired patches from master into the branch and commit these changes.
No Format git checkout branch-X.Y git cherry-pick <commit>
- For each patch merged, change the fix version for the JIRA issue to be X.Y.Z
- Go through JIRA, and git log to be sure that the issues included in the branch match in each location.
Update the version number in
lang/c/version.sh
(the variableslibavro_micro_version
,libavro_interface_age
andlibavro_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.
No Format git commit -am "Preparing to build X.Y.Z"
Tag the release candidate (R is the release candidate number):
No Format git tag -s release-X.Y.Z-rcR -m "Avro X.Y.Z rcR release."
Push the release tag and branch changes:
No Format git push apache release-X.Y.Z-rcR git push apache branch-X.Y
...
Tag the release:
No Format git checkout release-X.Y.Z-rcR git tag -s release-X.Y.Z -m "Avro X.Y.Z release." git push apache release-X.Y.Z
Copy release files to the release repository (PMC permissions required):
No Format 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 (PMC permissions required):
No Format 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 Java artifacts to the Maven repository:
Find the Staging Repository and release it. 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.
No Format # To install twine in the docker image export PATH=~/.local/bin/:$PATH python3 -m pip install --user --upgrade twine pip mkdir -p tmp/py cd tmp/py tar xvfz ../../dist/py/avro-X.Y.X.tar.gz cd avro-X.Y.Z python setup.py sdist twine upload dist/*
Publish Ruby artifacts to RubyGems. Again, you'll need an account and you need to be an owner.
No Format gem push dist/ruby/avro-X.Y.Z.gem
Publish JavaScript artifacts to npm. Again, you'll need an account and you need to be an owner.
No Format npm login npm publish dist/js/avro-js-X.Y.Z.tgz
Publish C# artifacts to NuGet. Again, you'll need an account and you need to be an owner. You also need to generate an additional key to publish.
No Format mkdir -p tmp/csharp cd tmp/csharp tar xvfz ../../dist/csharp/avro-csharp-X.Y.Z.tar.gz dotnet nuget push main/Apache.Avro.X.Y.Z.nupkg -k YOUR_KEY -s https://api.nuget.org/v3/index.json dotnet nuget push codegen/Apache.Avro.Tools.X.Y.Z.nupkg -k YOUR_KEY -s https://api.nuget.org/v3/index.json dotnet nuget push codec/Avro.File.Snappy/Apache.Avro.File.Snappy.X.Y.Z.nupkg -k YOUR_KEY -s https://api.nuget.org/v3/index.json dotnet nuget push codec/Avro.File.BZip2/Apache.Avro.File.BZip2.X.Y.Z.nupkg -k YOUR_KEY -s https://api.nuget.org/v3/index.json dotnet nuget push codec/Avro.File.XZ/Apache.Avro.File.XZ.X.Y.Z.nupkg -k YOUR_KEY -s https://api.nuget.org/v3/index.json dotnet nuget push codec/Avro.File.Zstandard/Apache.Avro.File.Zstandard.X.Y.Z.nupkg -k YOUR_KEY -s https://api.nuget.org/v3/index.json
Publish Perl artifacts to CPAN. Again, you'll need an account and you need to be an owner.
No Format cpan-upload -u YOUR_ID Avro-X.Y.Z.tar.gz
- Wait 24 hours for release to propagate to mirrors.
Prepare to edit the website. THIS SECTION IS OUT OF DATE. TODO!
No Format svn co https://svn.apache.org/repos/asf/avro/site
- Update the documentation links in
author/content/xdocs/site.xml
. - Update the release news in
author/content/xdocs/releases.xml
. Run Apache Forrest using Apache Ant. Example is with forrest installed using homebrew: http://macappstore.org/apache-forrest/
No Format cd site ant -Dforrest.home=/usr/local/Cellar/apache-forrest/0.9/ # Alternatively, using forrest inside the avro-build docker. ant -Dforrest.home=/usr/local/apache-forrest
Copy the new release docs, which are generated at the dist step, to website and update the
docs/current
link:No Format 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/docs svn add X.Y.Z rm current ln -s X.Y.Z current svn commit -m "Adding documentation for release X.Y.Z."
- Send an announcement email to the the mailing lists: announce@apache.org, user@avro.apache.org. and dev@avro.apache.org once the site changes are visible. Use your personal `@apache.org` email address or it will be refused.
- In Jira, "release" the version. Visit the Manage versions page. You need to have the "Admin" role in Avro's Jira for this step and the next.
- In Jira, close issues resolved in the release. Disable mail notifications for this bulk change.
- Update the release information in Apache Committee Report Helper (you should receive a reminder by email).
- Create a new release on Github:
- Draft a new release, using the release-X.Y.Z tag created in step 1.
- Release title: Apache Avro X.Y.Z
...