mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 13:33:15 +00:00
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:
parent
3d1ff4bfdb
commit
5568f9d12b
@ -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
|
||||||
|
@ -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(
|
||||||
|
Loading…
Reference in New Issue
Block a user