# Release process The release process follows the usual PR-and-review flow, allowing an external reviewer to have a final check before publishing a release. ## Requirements This guide requires: * a web browser (and network connectivity) * `git` * GPG setup and personal key for signing * [git-evtag](https://github.com/cgwalters/git-evtag/) * write access to the git repository * upload access to this project on GitHub ## Release checklist - Prepare local environment: - [x] `git remote get-url --push origin` - [x] validate that the output above points to `git@github.com:ostreedev/ostree.git` - [x] `git checkout main && git pull` - [x] `git clean -fd` - [x] `RELEASE_VER=yyyy.n` (matching `package_version` in `configure.ac`) - [x] `git checkout -b release-${RELEASE_VER}` - Prepare the release commits: - [x] `sed -i -e 's/^is_release_build=no/is_release_build=yes/' configure.ac` - [x] move the new-symbols stanza (if any) from `src/libostree/libostree-devel.sym` to `src/libostree/libostree-released.sym` - [x] comment the `src/libostree/libostree-devel.sym` include in `Makefile-libostree.am` - [x] update `tests/test-symbols.sh` with the new digest from `sha256sum src/libostree/libostree-released.sym` - [x] `git commit -a -m "Release ${RELEASE_VER}"` - [x] `RELEASE_COMMIT=$(git rev-parse HEAD)` - [x] `./autogen.sh && make dist` - [x] update `year_version` and `release_version` in `configure.ac` for the next development cycle - [x] `sed -i -e 's/^is_release_build=yes/is_release_build=no/' configure.ac` - [x] `git commit -a -m 'configure: post-release version bump'` - Open a PR to create the release: - [x] `git push -u origin release-${RELEASE_VER}` - [x] open a web browser and create a PR for the branch above, titled `Release ${RELEASE_VER}` - [x] make sure the resulting PR contains two commits - [x] in the PR body, write a short summary of relevant changes since last release (using `git shortlog` too) - [ ] get the PR reviewed, approved and merged - Publish the tag: - [ ] `git fetch origin && git checkout ${RELEASE_COMMIT}` - [x] `git-evtag sign v${RELEASE_VER}` - [ ] `git push --tags origin v${RELEASE_VER}` - Publish the release and artifacts on GitHub: - [ ] find the new tag in the [GitHub tag list](https://github.com/ostreedev/ostree/tags) and click the triple dots menu, then create a release for it - [ ] write a short changelog (i.e. re-use the PR content) - [ ] attach `libostree-{RELEASE_VER}.tar.xz` - [ ] publish release - Clean up: - [ ] `git clean -fd` - [ ] `git checkout main` - [ ] `git pull` - [ ] `git push origin :release-${RELEASE_VER}` - [ ] `git branch -d release-${RELEASE_VER}`
Release process
The release process follows the usual PR-and-review flow, allowing an external reviewer to have a final check before publishing a release.
Requirements
This guide requires:
gitRelease checklist
Prepare local environment:
git remote get-url --push origingit@github.com:ostreedev/ostree.gitgit checkout main && git pullgit clean -fdRELEASE_VER=yyyy.n(matchingpackage_versioninconfigure.ac)git checkout -b release-${RELEASE_VER}Prepare the release commits:
sed -i -e 's/^is_release_build=no/is_release_build=yes/' configure.acsrc/libostree/libostree-devel.symtosrc/libostree/libostree-released.symsrc/libostree/libostree-devel.syminclude inMakefile-libostree.amtests/test-symbols.shwith the new digest fromsha256sum src/libostree/libostree-released.symgit commit -a -m "Release ${RELEASE_VER}"RELEASE_COMMIT=$(git rev-parse HEAD)./autogen.sh && make distyear_versionandrelease_versioninconfigure.acfor the next development cyclesed -i -e 's/^is_release_build=yes/is_release_build=no/' configure.acgit commit -a -m 'configure: post-release version bump'Open a PR to create the release:
git push -u origin release-${RELEASE_VER}Release ${RELEASE_VER}git shortlogtoo)get the PR reviewed, approved and merged
Publish the tag:
git fetch origin && git checkout ${RELEASE_COMMIT}git-evtag sign v${RELEASE_VER}git push --tags origin v${RELEASE_VER}Publish the release and artifacts on GitHub:
libostree-{RELEASE_VER}.tar.xzClean up:
git clean -fdgit checkout maingit pullgit push origin :release-${RELEASE_VER}git branch -d release-${RELEASE_VER}