Tag and Release Instructions

How to create a new release.

Preparations Checklist

  • [[update zoneinfo|For-the-Maintainers:-Update-Zoneinfo]], if needed
  • Builds ok on all supported platforms (no Github Actions failures)
  • Passes all regression tests
  • Fix all compile warnings
  • Fix all Krazy, splint, cppcheck, and clang-tidy warnings
  • Do a Coverity Scan
  • Any Fuzzer problems?
  • Fix all problems found by Clang-analyzer (scan-build)
  • Compile with -DADDRESS_SANITIZER and run make test and fix any memory problems found
  • Make sure ReleaseNotes.txt is up-to-date. Double-check the release date.
  • Make sure the LIBICAL_LIB_*_VERSION values in the top-level CMakeLists.txt is up-to-date

Branch

If a major or minor release make sure to branch.

Create the Tag

git tag -m "Libical X.Y.Z" vX.Y.Z

Do an ABI Compliance Check (may not be needed for major releases, but useful nonetheless)

if all ok then go ahead and:

git push --tags

Make a Release on Github

Go to GitHub releases section and make an official release. Push the "Draft a new release" button.

Create a new tarball using git archive and add this the release (at the bottom of the page you will see a legend: "Attach images by dragging & dropping, selecting them, or pasting from the clipboard.")

git archive --format=tar --prefix=libical-2.0.0/ v2.0.0 | gzip > libical-2.0.0.tar.gz

New APIDOX

Follow the instructions for the API Documentation

New vcpkg port

The vcpkg libical port should follow a new version.

Create an issue on vcpkg in GitHub

(also looks easy enough to make our own PR from a vcpkg fork, if we want to help out)

New Conan package

TODO: document how to update the libical Conan package

Note that there is no conan package yet: we are working on it

Announcing

Open Git Discussions and make the announcement there.

Here's a sample announcement

Announcing Libical 1.0.1
This is the first bugfix release for Libical 1.0.0

Highlights of this Release:
 * highlight1
 * highlight2
 * highlight3

The source code can be found on GitHub at:
https://github.com/libical/libical

Tarballs and zipballs for v1.0.1 are available from:
https://github.com/libical/libical/releases

Libical is an Open Source implementation of the iCalendar protocols
and protocol data units. The iCalendar specification describes how
calendar clients can communicate with calendar servers so users can
store their calendar data and arrange meetings with other users. 

Libical implements RFC2445, RFC2446 and some of RFC2447.

For more information about Libical, please visit
[https://libical.github.io/](https://libical.github.io/)

Prepare for Next Release

If a patch-level release

Increase the LIBICAL_LIB_PATCH_VERSION value in the top-level CMakeLists.txt

Add an "UNRELEASED" section at the top of ReleaseNotes.txt