RELEASE-PROCEDURE.md 2.8 KB

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:

    • Daniel Stenberg daniel@haxx.se - 27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2
    • Brad House brad@brad-house.com - DA7D64E4C82C6294CB73A20E22E3D13B5411B7CA

      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

inform

celebrate

  • suitable beverage intake is encouraged for the festivities