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. We also
want to create an empty commit in the branch with a message, this ensures
when we tag a release from the branch, it gets tied to the branch itself and
not a commit which may be shared across this branch and main. Create the
branch like:
BRANCH=1.32
git pull && \
git checkout main && \
git checkout -b v${BRANCH} main && \
git commit --allow-empty -m "Created release branch v${BRANCH}" && \
git push -u origin v${BRANCH}
- 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:
BRANCH=1.32
RELEASE=1.32.0
git checkout v${BRANCH} && \
git pull && \
git tag -s v${RELEASE} -m 'c-ares release v${RELEASE}' v${BRANCH} && \
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:
RELEASE=1.32.0
git clone --depth 1 --branch v${RELEASE} https://github.com/c-ares/c-ares c-ares-${RELEASE} && \
cd c-ares-${RELEASE} && \
autoreconf -fi && \
./configure && \
make && \
make dist VERSION=${RELEASE}
- GPG sign the release with a detached signature. Valid signing keys are currently:
gpg -ab c-ares-${RELEASE}.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.md, change version and date in frontmatter
- edit
changelog.md, copy RELEASE-NOTES.md content
- edit
download.md, add new version and date in frontmatter
- commit all local changes
- push the git commits
celebrate
- suitable beverage intake is encouraged for the festivities