Increment the year_version and release_version macros in configure.ac.
Increment the Version field in rpm-ostree.spec.
Verify the libdnf deps in rpm-ostree.spec are up to date by copy/pasting the relevant bits from the spec in the git submodule (libdnf/libdnf.spec).
Submit as a PR and wait until reviewed and CI is green.
Once merged, do git pull $upstream && git reset --hard $upstream/main on your local main branch to make sure you’re on the right commit.
Draft release notes by seeding a HackMD.io with git shortlog $last_tag.. and ideally collaborating with others. Filter out the commits from dependabot. See previous releases for format.
Use git-evtag to create a signed tag with the release notes as its content. Make the first line be the name of the tag itself.
Push the tag using git push $upstream v202X.XX.
Create the xz tarball: make -C packaging -f Makefile.dist-packaging dist-snapshot
Create a GitHub release for the new release tag using its contents and attach the tarball.