c-ares release procedure - how to do a release

in the source code repo

  • edit RELEASE-NOTES.md to be accurate
  • edit configure.ac's CARES_VERSION_INFO, and CMakeLists.txt's CARES_LIB_VERSIONINFO set to the same value to denote the current shared object versioning.
  • edit include/ares_version.h and set ARES_VERSION_* definitions to reflect the current version.
  • All release tags need to be made off a release branch named vX.Y, where X is the Major version number, and Y is the minor version number. If this branch is not yet created, you may create it off the main branch like:
  git checkout -b v1.30 main
  git push -u origin v1.30
  • make sure all relevant changes are committed on the release branch
  • Create a signed tag for the release using a name of vX.Y.Z where X is the Major version number, Y is the minor version number, and Z is the release. This tag needs to be created from the release branch, for example:
git tag -s v1.30.0 -m 'c-ares release 1.30.0' v1.30
git push origin --tags
  • Create the release tarball using make dist, it is best to check out the specific tag fresh and build from that:
git clone --depth 1 --branch v1.30.0 https://github.com/c-ares/c-ares c-ares-1.30.0 && \
cd c-ares-1.30.0 && \
autoreconf -fi && \
./configure && \
make && \
make dist VERSION=1.30.0
  • GPG sign the release with a detached signature. Valid signing keys are currently:
gpg -ab c-ares-1.30.0.tar.gz
  • Create a new release on GitHub using the RELEASE-NOTES.md as the body. Upload the generated tarball and signature as an artifact.

in the c-ares-www repo

  • edit index.t (version number and date),

  • edit changelog.t (add the new release in there)

  • edit download/index.t for the new release

  • commit all local changes

  • push the git commits and the new tag

inform

celebrate

  • suitable beverage intake is encouraged for the festivities