# Release Process

## Checklist

- [ ] bump version in meson.build (`project(... version:)`; the tag is what
      `scripts/get_version.sh` reports)
- [ ] if `ANASTASIS_PROTOCOL_CURRENT` (src/restclient/anastasis_api_config.c)
      or the version served by `/config`
      (src/backend/anastasis-httpd_config.c) changed, say so in NEWS, state
      whether stored data is still readable, and confirm which
      taler-typescript-core release speaks the same protocol version --
      the C and TypeScript clients have to bump in lock-step
- [ ] if a public library's ABI changed, bump its entry in `libltversions`
      in meson.build, and say so in NEWS (out-of-tree users such as
      anastasis-gtk need to know)
- [ ] if `src/stasis/stasis-*.sql` gained a migration, confirm it was tested
      against a database created by the *previous* release, not only against
      a fresh one
- [ ] add entry to NEWS
- [ ] add entry to ChangeLog
- [ ] add entry to debian/changelog
- [ ] check CI (contrib/ci, buildbot.taler.net)
- [ ] tag with dev tag, test in staging environment
- [ ] tag with release tag
- [ ] upload to GNU mirrors
- [ ] upload Debian packages to deb.taler.net

## Versioning

Releases use `$major.$minor.$patch` semantic versions.  The corresponding git
tag is `v$major.minor.$patch`.

Versions that are tested in staging environments typically use
`v$major.$minor.$patch-dev.$n` tags.

