Release procedure

Maureen Helm edited this page Jun 11, 2018 · 26 revisions

Overview

This page documents the Release manager responsibilities so that it serves as a knowledge repository for Release managers.

Milestones

The description of the different Milestones leading to a release can be found in the following Program Management sections:

Release Checklist

Each release has a GitHub issue associated with it that contains the full checklist. After a release is complete, a checklist for the next release is created. This is the checklist for v1.11.0.

Tagging

Note: This section uses tagging 1.11.0-rc1 as an example, replace with the appropriate version.

Every time a release candidate (or the final release) needs to be tagged, the following steps need to be followed:

  1. Update the VERSION file in the root of the Git repository. If it's a release candidate, use EXTRAVERSION:
EXTRAVERSION = rc1
  1. Commit the update to the VERSION file, use release: as a commit tag.

  2. Check that CI has completed successfully before tagging.

  3. Tag and push the version, using annotated tags:

  • If it's a release candidate:
    $ git tag -a v1.11.0-rc1
    <Use "Zephyr 1.11.0-rc1" as the tag annotation>
    $ git push git@github.com:zephyrproject-rtos/zephyr.git v1.11.0-rc1
    
  • If it's a release:
    $ git tag -a v1.11.0
    <Use "Zephyr 1.11.0" as the tag annotation>
    $ git push git@github.com:zephyrproject-rtos/zephyr.git v1.11.0
    
    $ git tag -a zephyr-v1.11.0
    <Use "Zephyr 1.11.0" as the tag annotation>
    $ git push git@github.com:zephyrproject-rtos/zephyr.git zephyr-v1.11.0
    
  1. If it's a release candidate, create a shortlog of changes between the previous release:
$ git shortlog v1.10.0..v.1.11.0-rc1
  1. Find the new tag at the top of the releases page, edit the release with the "Edit" button and then do the following:
  • If it's a release candidate:

    • Name it Zephyr 1.11.0-rc1
    • Copy the shortlog into the release notes textbox (don't forget to quote it properly so it shows as unformatted text in Markdown)
    • Check the "This is a pre-release" checkbox
  • If it's a release:

    • Name it Zephyr 1.11.0
    • Copy the full content of docs/release-notes-1.11.rst into the the release notes textbox
    • Copy the full list of GitHub issues closed with this release into the release notes textbox (see below on how to generate this list)
  1. Send an email to the mailing lists (zephyr-announce and zephyr-devel) with a link to the release

Listing all closed GitHub issues

The release notes for a final release contain the list of GitHub issues that have been closed during the development process of that release.

In order to obtain the list of issues closed during the release development cycle you can do the following:

  1. Look for the last release before the current one and find the day it was tagged:
$ git show zephyr-v1.10.0
tag zephyr-v1.10.0
Tagger: Kumar Gala <kumar.gala@linaro.org>
Date:   Fri Dec 8 14:26:35 2017 -0600
  1. Find a way to list all the issues that have been closed between that date and the day of the release. In the case of 1.11.0, this was: 2018-03-09 - 2017-12-08 = 91 days. A simple Smart Query on Ship yields the full list of issues closed during the last 91 days. We do this instead of using the Milestone because sometimes issues are opened and closed without a Milestone being set. This is equivalent to using this GitHub search query.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.