Skip to content

Making a release

Jelte Fennema-Nio edited this page Jan 26, 2024 · 31 revisions

Making a release

Preparation

  • Check out the pgbouncer and pgbouncer.github.io repositories next to each other.
  • Make sure that you can build both pgbouncer and the web site locally.
  • Check that Cirrus CI is building successfully. Build Status

Code changes

  • Update libusual and uthash if changes are pending.
    git submodule update --recursive --remote
    
  • Update the version number in NEWS.md and configure.ac
  • Choose a "funny name" for the release in NEWS.md
  • Add all the changes to the changelog entry
  • git commit -m 'vX.Y.Z'
  • Create a PR
  • Wait for reviews
  • Update the releasedate in NEWS.md
  • Wait for the CI build to complete and download the release tarball from there. (Use the first job, just for consistency.)
  • DO NOT MERGE THE PR YET.

Update the web site

  • Copy the release tarball into a new directory under downloads/files/X.Y.Z. (This is the canonical location of the release tarball. The GitHub releases feature is secondary.)
  • make doc (This updates _data/downloads.json, changelog.md, and other files, and copies over documentation files from the pgbouncer repository.)
  • Write a release post in _posts.
  • git commit -a -m 'vX.Y.Z' (no tag)
  • DO NOT PUSH YET

Irrecoverable changes ahead

Only continue with these steps if you're happy with all the changes. First double check:

  • The release date in the NEWS.md file.
  • The "funny name" in the NEWS.md file
  • The release date in the filename of the release post in _posts.
  • The version numbers everywhere.

If you checked those then continue with the following steps:

  • Merge the PR on the code repo using "squash merge". Make sure the commit is called vX.Y.Z (without PR number)
  • In the code repo:
    • git checkout master
    • git pull
    • git tag -am '' pgbouncer_X_Y_Z
    • git push --tags
  • In the website repo:
    • git push
  • Make a GitHub release from the tag. (Copy the already Markdown-formatted part of the changelog from NEWS.md. But adjust the line breaks, since GitHub interprets them differently.)
    • To the release, attach the tarball and also the Windows binary zip files built on CI.

Announcements

  • Gitter
  • PostgreSQL web site news (example) (You can write and save a draft ahead of time.)

For consistency, announcements should link to the release post on the web site and use the text from the post.