ReleaseProcess

This page is a work in progress.

= Manual Release Process Notes = Documenting the steps taken todo a release manually, in hopes that it can be automated.

RC plan
Around one week unless problems are found.

Changelog
Date and version

Release commit

 * Change CMakeLists.txt to MAJOR.API.ABI.PATCH. If a release candidate, PATCH `-rc0`format to help with sort order. For final version, PATCH is `0`
 * Create PR with this change, title formatted like "Release v3.8.3.0-rc1"
 * Merge release PR
 * Sync local checkout for later comparison step

Version change for continuation
Skip if this is a RC version. The branch will stay linear until the final version is released.

CMakeLists.txt
Change CMakeLists.txt to MAJOR.API.ABI.git

Changelog
Unreleased version number?

Sign tag
Tagging is done against a git clone of. Recommend keeping this in a separate directory, to avoid inadvertent pushes directly to the gnuradio repo. git checkout  git tag -u info@gnuradio.org  -m '' git tag -v  git push origin  This will use the latest signing key associated with info@gnuradio.org.

Release

 * In Github, go to code, branch, and then release list (or tags, then hit releases)
 * Draft a new release
 * Select branch and enter release version from commit as a tag
 * Title same as commit: "Release v..."
 * Publish
 * Github creates a tar.gz and a zip
 * Download these files immediately
 * For 3.8, create variants with a -with-volk-X.Y.Z suffix
 * Check out volk using
 * Create tar.gz and zip files
 * Volk versions
 * Previous to 3.8.3.0, it was included in all releases
 * 3.8.3.0 -with-volk variant includes v2.0.0
 * 3.8.3.1 and later include both v2.0.0 and latest-stable variants
 * Fedora requested we continue to include Volk for 3.8 to keep packaging consistent

Download tar.gz and zip
If not done in release step

Verify archives

 * Unpack each archive
 * Diff against existing git checkout to verify, e.g., with meld. Expect minor differences due to git ignored files (e.g., `__pycache__`, `.vscode`)
 * Keep the tar and zip files locally for a little while in case something comes up

Sign archives

 * Create detacted signatures: `gpg --detach-sign --armor -u info@gnuradio.org filename`
 * Verify signatures: `gpg --verify filename.asc`
 * Keep the signatures locally for a little while in case something comes up

Upload signatures and public key

 * On Github release page, edit release
 * Click "attach binaries" or drag/drop files
 * ...tar.gz.asc
 * ...zip.asc
 * gnuradio-software-signing-key.asc
 * Note that the signing key should also be somewhere else where people can verify it

Github
Takes care of itself.

Email
Point to releases page, changelog page, ask for problem reports via email or issue tracker.

Wiki
TBD

Web site
Add articles to the news section on the wiki https://github.com/gnuradio/hugo-website#how-to-add-stuff-to-the-website

Distros and other packagers
TBD