doc: Add a commands snippet to workflow about what to do in the 1st phase

What we should do when creating stabilization branch from the master.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
This commit is contained in:
Donatas Abraitis 2022-02-01 22:25:22 +02:00
parent 3d1ff4bfdb
commit 5568f9d12b
2 changed files with 53 additions and 20 deletions

View File

@ -95,8 +95,8 @@ March/July/November. Walking backwards from this date:
are considered lowest priority (regardless of when they were opened.) are considered lowest priority (regardless of when they were opened.)
- 4 weeks earlier, the stable branch separates from master (named - 4 weeks earlier, the stable branch separates from master (named
``dev/MAJOR.MINOR`` at this point) and a ``rc1`` release candidate is ``dev/MAJOR.MINOR`` at this point) and tagged as ```base_X.Y``.
tagged. Master is unfrozen and new features may again proceed. Master is unfrozen and new features may again proceed.
Part of unfreezing master is editing the ``AC_INIT`` statement in Part of unfreezing master is editing the ``AC_INIT`` statement in
:file:`configure.ac` to reflect the new development version that master :file:`configure.ac` to reflect the new development version that master
@ -108,7 +108,38 @@ March/July/November. Walking backwards from this date:
(The :file:`configure.ac` edit and tag push are considered git housekeeping (The :file:`configure.ac` edit and tag push are considered git housekeeping
and are pushed directly to ``master``, not through a PR.) and are pushed directly to ``master``, not through a PR.)
- 2 weeks earlier, a ``rc2`` release candidate is tagged. Below is the snippet of the commands to use in this step.
.. code-block:: console
% git remote --verbose
upstream git@github.com:frrouting/frr (fetch)
upstream git@github.com:frrouting/frr (push)
% git checkout master
% git pull upstream master
% git checkout -b dev/8.2
% git tag base_8.2
% git push upstream base_8.2
% git push upstream dev/8.2
% git checkout master
% sed -i 's/8.2-dev/8.3-dev/' configure.ac
% git tag -a frr-8.3-dev -m "frr-8.3-dev"
% git push upstream frr-8.3-dev
% git add configure.ac
% git commit -s -m "build: FRR 8.3 development version"
% git push upstream master
In this step, we also have to update package versions to reflect
the development version. Versions need to be updated using
a standard way of development (Pull Requests) based on master branch.
Only change the version number with no other changes. This will produce
packages with the a version number that is higher than any previous
version. Once the release is done, whatever updates we make to changelog
files on the release branch need to be cherry-picked to the master branch.
- 2 weeks earlier, a ``frr-X.Y-rc`` release candidate is tagged.
- on release date, the branch is renamed to ``stable/MAJOR.MINOR``. - on release date, the branch is renamed to ``stable/MAJOR.MINOR``.
@ -121,15 +152,15 @@ as early as possible, i.e. the first 2-week window.
For reference, the expected release schedule according to the above is: For reference, the expected release schedule according to the above is:
+------------+------------+------------+------------+------------+------------+ +---------+------------+------------+------------+------------+------------+
| Release | 2021-11-02 | 2022-03-01 | 2022-07-05 | 2022-11-01 | 2023-03-07 | | Release | 2021-11-02 | 2022-03-01 | 2022-07-05 | 2022-11-01 | 2023-03-07 |
+------------+------------+------------+------------+------------+------------+ +---------+------------+------------+------------+------------+------------+
| rc2 | 2021-10-19 | 2022-02-15 | 2022-06-21 | 2022-10-18 | 2023-02-21 | | RC | 2021-10-19 | 2022-02-15 | 2022-06-21 | 2022-10-18 | 2023-02-21 |
+------------+------------+------------+------------+------------+------------+ +---------+------------+------------+------------+------------+------------+
| rc1/branch | 2021-10-05 | 2022-02-01 | 2022-06-07 | 2022-10-04 | 2023-02-07 | | dev/X.Y | 2021-10-05 | 2022-02-01 | 2022-06-07 | 2022-10-04 | 2023-02-07 |
+------------+------------+------------+------------+------------+------------+ +---------+------------+------------+------------+------------+------------+
| freeze | 2021-09-21 | 2022-01-18 | 2022-05-24 | 2022-09-20 | 2023-01-24 | | freeze | 2021-09-21 | 2022-01-18 | 2022-05-24 | 2022-09-20 | 2023-01-24 |
+------------+------------+------------+------------+------------+------------+ +---------+------------+------------+------------+------------+------------+
Each release is managed by one or more volunteer release managers from the FRR Each release is managed by one or more volunteer release managers from the FRR
community. To spread and distribute this workload, this should be rotated for community. To spread and distribute this workload, this should be rotated for

View File

@ -36,21 +36,23 @@ if __name__ == "__main__":
print("Last release was (scheduled) on %s" % last.isoformat()) print("Last release was (scheduled) on %s" % last.isoformat())
rel = upcoming.pop(0) rel = upcoming.pop(0)
freeze, rc1, rc2 = rel - w2 * 3, rel - w2 * 2, rel - w2 freeze, stabilization, rc = rel - w2 * 3, rel - w2 * 2, rel - w2
if now == rel: if now == rel:
print("It's release day! 🎉") print("It's release day! 🎉")
elif now >= rc2: elif now >= rc:
print( print(
"%d days until release! (rc2 since %s)" "%d days until release! (RC since %s)" % ((rel - now).days, rc.isoformat())
% ((rel - now).days, rc2.isoformat()) )
elif now >= stabilization:
print(
"%d days until RC. (stabilization branch created since %s)"
% ((rc - now).days, stabilization.isoformat())
) )
elif now >= rc1:
print("%d days until rc2. (rc1 since %s)" % ((rc2 - now).days, rc1.isoformat()))
elif now >= freeze: elif now >= freeze:
print( print(
"%d days until rc1, master is frozen since %s" "%d days until stabilization branch, master is frozen since %s"
% ((rc1 - now).days, freeze.isoformat()) % ((stabilization - now).days, freeze.isoformat())
) )
else: else:
print( print(