Skip to content

RIOT-OS/RIOT-release-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RIOT release manager tool

A handy script for a release manager to create all steps of a release

Installation

Requirements (are automatically installed with command below):

  • appdirs
  • gnupg
  • pygithub

The easiest way is to install with pip

pip install git+ssh://git@github.com/RIOT-OS/RIOT-release-manager.git

But you can of course also clone the GitHub repository and run the setup.py script.

Usage

You need to have write permissions in the RIOT-OS/RIOT repository and your SSH public key assigned to your account.

For more help check

riot-release-manager -h

Go into feature freeze

riot-release-manager feature-freeze YYYY.MM

Where YYYY.MM is the new release. If the release cycle shifted (i.e. the next release is not in three month ago) you can also provide a second YYYY.MM parameter that indicates this release name for the YYYY.MM-devel tag.

This command

  • Creates the YYYY.MM-devel annotated tag towards the next release
  • Creates the YYYY.MM-branch release branch for the current release
  • Creates the YYYY.MM-RC1 release candidate tag on the release branch
  • Creates an issue for testing the release specs for the release candidate in the RIOT-OS/Release-Specs repository

Create a new release candidate

Note:* This command expects the HEAD of YYYY.MM-branch to be different from YYYY.MM-RCx (where x denotes the number the most recent release candidate version)

riot-release-manager rc YYYY.MM

This command

  • Creates the YYYY.MM-RCy release candidate tag in the release branch (where y denotes the number of the next release candidate version after the most recent)
  • Creates a new issue for testing the release specs for the release candidate in the RIOT-OS/Release-Specs repository
  • Closes the issue for testing the previous release candidate in the RIOT-OS/Release-Specs

Set milestones to merged PRs

riot-release-manager set-milestones YYYY.MM --execute

This command will set the milestone "Release YYYY.MM" on GitHub to each PRs merged during the current cycle.

  • Without the --execute flag, this command will run in "dry-run" mode: it is useful to verify the list of PRs that would be modified.
  • The --one flag can be used to only modify one PR and check the milestone is correctly set to it.

Generate the release notes

riot-release-manager release-notes YYYY.MM

This command prints the release notes in the usual format, the notes contain: - The release statistics (number of PRs, commits, authors, etc), - The list of changes in the release, - The list of known and closed issues in the release.

Optional: use the -w/--write flags to update the release-notes.txt file directly. You can specify the local copy of your RIOT clone using -d <path to RIOT>. Example:

riot-release-manager -d <path to RIOT> release-notes YYYY.MM --write

Create the release

riot-release-manager release YYYY.MM

This command

  • Checks if the release notes for the YYYY.MM release are present in the release branch
  • Checks if the VERSION file for the YYYY.MM release is present with the right content in the release branch
  • Creates the signed YYYY.MM annotated tag which includes the release notes into the tag message - It requires your gpg key to be listed in gpg --list-keys
  • Creates the release at https://github.com/RIOT-OS/RIOT/releases
  • Launches confetti 🎉

I also works for bug-fixing point releases:

riot-release-manager release YYYY.MM.X

where X is an incrementing number.

About

A handy script for a release manager to create all steps of a release

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 15