-
Notifications
You must be signed in to change notification settings - Fork 91
Release process
Michael Baentsch edited this page Jun 14, 2024
·
17 revisions
The following instructions assume that you have sufficient permissions to draft and publish releases.
- If doing a release together with a
liboqs
release, runpython3 oqs-template/generate.py
: if code changes become visible, be sure to do a PR with this before the release; be sure to have code properly formatted as per coding style documentation. - If doing a release independent of a
liboqs
release, be sure to be able to generate code from the stated supportedliboqs
release "a.b.c" (by runningLIBOQS_BRANCH=a.b.c ./scripts/fullbuild.sh -F && ./scripts/runtests.sh -V
). - Check all CI tests pass.
- Check
./scripts/release-test.sh
passes on latestopenssl
and supported/latestliboqs
release(s). - Update "OQSPROVIDER_VERSION_TEXT" in
CMakeLists.txt
. - Update supported
liboqs
version in CI binary generator files in ".github/workflows" for Linux, MacOS, Windows. - Open
github
release UI by clicking on "Releases" and "Draft a new release". - Select release tag matching contents of
OQSPROVIDER_VERSION_TEXT
and click "Generate release notes". - Complete generated notes with high-level release description; do not yet click on "Publish release".
- Copy full release description to the top of
RELEASES.md
. - Add and commit this update to
main
branch (clearing all caches in Actions recommended) assuming you have "maintainer" rights allowing you to merge directly and operate all required github admin interfaces. If you do not have "maintainer" rights, create a PR with your changes targetingmain
. - Create and publish a release candidate pre-release in the GitHub release UI with the tag
x.y.z-rc1
(e.g.,0.6.1-rc1
). "rc1" should be bumped to "rc2", "rc3", etc. if multiple release candidates are required. - A minimal RC acceptance condition is that
nginx
andcurl
images build and interoperate OK (part of automated CI downstream testing). - When the release candidate is ready for release (usually agreed upon by consensus in an OQS meeting), create and publish the final release.
- After this is done, CI will again trigger downstream creation of integration docker images, e.g.,
curl
andnginx
in the oqs-demos sub project. It is highly advisable that the images created at this moment are suitably tagged with the same release version. - Upgrade "OQSPROVIDER_VERSION_TEXT" in
CMakeLists.txt
to next "-dev" version for continued development. Either merge directly tomain
or create a PR targetingmain
, depending on your permissions. After this has landed, the docker images will be automatically re-created and the specific version matching the release ID will be over-written (unless tagged as per the previous step). Automation for this would be desirable.