Difference between revisions of "ReleaseProcess"

From GNU Radio
Jump to navigation Jump to search
(16 intermediate revisions by the same user not shown)
Line 10: Line 10:


=== Cross-referencing ===
=== Cross-referencing ===
Cherry picking, using the -xs flags, automatically adds a cross reference, for example
commit bc21cf1f9ca25dd3efcbc9806cee4f6c1726a905
Author: Marcus Müller <mmueller@gnuradio.org>
Date:  Sun Aug 15 18:54:10 2021 +0200
    audio/jack: to_string is no longer part of boost:: NS, instead use std::
   
    Signed-off-by: Marcus Müller <mmueller@gnuradio.org>
    (cherry picked from commit 883315208853121a8dfa68ae9c2f74400acd5ac5)
    Signed-off-by: Jeff Long <willcode4@gmail.com>
For other commits, add cross references to '''Git commits only''', not to PRs. The
git repo should stand on its own. At the very least, explain how a commit relates to
any work on the master branch.
Backported PRs should reference the original PRs like this
Backport #1234
at the bottom of the description.


== Change freeze ==
== Change freeze ==
About 2-3 weeks before release. This is informal. Accept only critical or very low risk
changes at this point.


=== Announce ===
=== Announce ===
Mention on the Development and General Chat channels on Matrix.
At this point, the mailing list is more for communicating with users than with core
developers, so announcements there would not be useful, and could result in solicitation
of extra PRs exactly when we are not going to consider them.


=== Slow down changes ===
=== Slow down changes ===


=== RC plan ===
=== RC plan ===
Around one week unless problems are found.
About 1 week before release.


== Changelog ==
== Changelog ==
Line 40: Line 65:


=== Release commit ===
=== 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`
* Change CMakeLists.txt to MAJOR.API.ABI.PATCH. If a release candidate, PATCH `0-rc1` 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"
* Create PR with this change, title formatted like "Release v3.8.3.0-rc1" (*)
* Merge release PR
* Merge release PR (*)
* Sync local checkout for later comparison step
* Sync local checkout for later comparison step
(*) These steps can be replaced by directly pushing to the maint-X.Y branch without a PR (but with extra care required).


== Version change for continuation ==
== Version change for continuation ==
Line 55: Line 82:


== Github release ==
== Github release ==
=== Sign tag ===
Tagging is done against a git clone of <code>git@github.com:gnuradio/gnuradio.git</code>. Recommend keeping this in a separate directory, to avoid inadvertent pushes directly to the gnuradio repo.
git checkout <branch_name>
git tag -u info@gnuradio.org <tag_name> -m '<tag_name>'
git tag -v <tag_name>
git push origin <tag_name>
This will use the latest signing key associated with info@gnuradio.org.


=== Release ===
=== Release ===
Line 65: Line 100:
* Github creates a tar.gz and a zip
* Github creates a tar.gz and a zip
* Download these files immediately
* Download these files immediately
* For 3.8, create a variant with a -with-volk suffix
* For 3.8, create variants with a -with-volk-X.Y.Z suffix
** Check out volk using <code>git submodule update --init</code>
** Check out volk using <code>git submodule update --init</code>
** Create tar.gz and zip files
** Create tar.gz and zip files
 
** Volk versions
=== Sign tag ===
*** Previous to 3.8.3.0, it was included in all releases
Tagging is done against a git clone of <code>git@github.com:gnuradio/gnuradio.git</code>. Recommend keeping this in a separate directory, to avoid inadvertent pushes directly to the gnuradio repo.
*** 3.8.3.0 -with-volk variant includes v2.0.0
git checkout <branch_name>
*** 3.8.3.1 and later include both v2.0.0 and latest-stable variants
git tag -u info@gnuradio.org <tag_name> -m '<tag_name>'
** Fedora requested we continue to include Volk for 3.8 to keep packaging consistent
git tag -v <tag_name>
git push origin <tag_name>
This will use the latest signing key associated with info@gnuradio.org.


== Software signing ==
== Software signing ==


=== Verify or create valid signing key ===
=== Verify or create valid signing key ===
The GPG key includes a signing subkey, which is used to sign releases. The master key
is used only for certifying subkeys.


=== Download tarball and zip ===
Currently, the signing subkey expiration date is extended a year at a time, as long as there
are no personnel changes and the key remains secure.
 
=== Download tar.gz and zip ===
If not done in release step
If not done in release step


=== Verify tarballs ===
=== Verify archives ===
* Unpack each archive
* 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`)
* 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
* Keep the tar and zip files locally for a little while in case something comes up


=== Sign tarballs ===
=== Sign archives ===
* Create detacted signatures: `gpg --detach-sign --armor -u info@gnuradio.org filename`
* Create detacted signatures: `gpg --detach-sign --armor -u info@gnuradio.org filename`
* Verify signatures: `gpg --verify filename.asc`
* Verify signatures: `gpg --verify filename.asc`
Line 114: Line 151:


=== Web site ===
=== Web site ===
TBD
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 ===
=== Distros and other packagers ===
TBD
TBD

Revision as of 01:00, 1 April 2022

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.

Backporting

Criteria

Cross-referencing

Cherry picking, using the -xs flags, automatically adds a cross reference, for example

commit bc21cf1f9ca25dd3efcbc9806cee4f6c1726a905
Author: Marcus Müller <mmueller@gnuradio.org>
Date:   Sun Aug 15 18:54:10 2021 +0200

   audio/jack: to_string is no longer part of boost:: NS, instead use std::
   
   Signed-off-by: Marcus Müller <mmueller@gnuradio.org>
   (cherry picked from commit 883315208853121a8dfa68ae9c2f74400acd5ac5)
   Signed-off-by: Jeff Long <willcode4@gmail.com>

For other commits, add cross references to Git commits only, not to PRs. The git repo should stand on its own. At the very least, explain how a commit relates to any work on the master branch.

Backported PRs should reference the original PRs like this

Backport #1234

at the bottom of the description.

Change freeze

About 2-3 weeks before release. This is informal. Accept only critical or very low risk changes at this point.

Announce

Mention on the Development and General Chat channels on Matrix. At this point, the mailing list is more for communicating with users than with core developers, so announcements there would not be useful, and could result in solicitation of extra PRs exactly when we are not going to consider them.

Slow down changes

RC plan

About 1 week before release.

Changelog

Maintain

Sync/deconflict with other branches

Author credits

Testing

CI

Manual

Version change for release

Changelog

Date and version

Release commit

  • Change CMakeLists.txt to MAJOR.API.ABI.PATCH. If a release candidate, PATCH `0-rc1` 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

(*) These steps can be replaced by directly pushing to the maint-X.Y branch without a PR (but with extra care required).

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?

Github release

Sign tag

Tagging is done against a git clone of git@github.com:gnuradio/gnuradio.git. Recommend keeping this in a separate directory, to avoid inadvertent pushes directly to the gnuradio repo.

git checkout <branch_name>
git tag -u info@gnuradio.org <tag_name> -m '<tag_name>'
git tag -v <tag_name>
git push origin <tag_name>

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 git submodule update --init
    • 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

Software signing

Verify or create valid signing key

The GPG key includes a signing subkey, which is used to sign releases. The master key is used only for certifying subkeys.

Currently, the signing subkey expiration date is extended a year at a time, as long as there are no personnel changes and the key remains secure.

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

Notification

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