]> git.proxmox.com Git - mirror_frr.git/blob - doc/developer/frr-release-procedure.rst
a3ead93d721986d4ce7a9b2009cc7d63094cc7bb
[mirror_frr.git] / doc / developer / frr-release-procedure.rst
1 .. _frr-release-procedure:
2
3 FRR Release Procedure
4 =====================
5
6 ``<version>`` - version to be released, e.g. 7.3
7 ``origin`` - FRR upstream repository
8
9 1. Checkout ``dev/<version>``.
10
11 .. code-block:: shell
12
13 git checkout dev/<version>
14
15 2. Create and push a new branch called ``stable/<version>`` based on the
16 ``dev/<version>`` branch.
17
18 .. code-block:: shell
19
20 git checkout -b stable/<version>
21 git push origin stable/<version>:refs/heads/stable/<version>
22
23 3. Update Changelog for Red Hat Packages:
24
25 Edit :file:`redhat/frr.spec.in` and look for the ``%changelog`` section:
26
27 - Change last (top of list) entry from ``%{version}`` to the **last**
28 released version number. For example, if ``<version>`` is ``7.3`` and the
29 last public release was ``7.2``, you would use ``7.2``, changing the file
30 like so::
31
32 * Tue Nov 7 2017 Martin Winter <mwinter@opensourcerouting.org> - %{version}
33
34 to::
35
36 * Tue Nov 7 2017 Martin Winter <mwinter@opensourcerouting.org> - 7.2
37
38 - Add new entry to the top of the list with ``%{version}`` tag. Make sure
39 to watch the format, i.e. the day is always 2 characters, with the 1st
40 character being a space if the day is one digit.
41
42 - Add the changelog text below this entry.
43
44 4. Update Changelog for Debian Packages:
45
46 Edit :file:`changelog-auto.in`:
47
48 - Change last (top of list) entry from ``@VERSION@`` to the **last**
49 released version number. For example, if ``<version>`` is ``7.3`` and the
50 last public release was ``7.2``, you would use ``7.2``, changing the file
51 like so::
52
53 frr (@VERSION@) RELEASED; urgency=medium
54
55 to::
56
57 frr (7.2) RELEASED; urgency=medium
58
59 - Add a new entry to the top of the list with a ``@VERSION@`` tag. Make sure
60 to watch the format.
61
62 - Add the changelog text below this entry.
63
64 - Verify the changelog format using ``dpkg-parsechangelog``. In the
65 repository root:
66
67 .. code-block:: shell
68
69 dpkg-parsechangelog
70
71 You should see output like this::
72
73 vagrant@local ~/frr> dpkg-parsechangelog
74 Source: frr
75 Version: 7.3-dev-0
76 Distribution: UNRELEASED
77 Urgency: medium
78 Maintainer: FRRouting-Dev <dev@lists.frrouting.org>
79 Timestamp: 1540478210
80 Date: Thu, 25 Oct 2018 16:36:50 +0200
81 Changes:
82 frr (7.3-dev-0) RELEASED; urgency=medium
83 .
84 * Your Changes Here
85
86 5. Change main version number:
87
88 - Edit :file:`configure.ac` and change version in the ``AC_INIT`` command
89 to ``<version>``
90
91 6. Commit the changes, adding the changelog to the commit message. Follow all
92 existing commit guidelines.
93
94 7. Create and submit a GitHub pull request, with the ``HEAD`` set to
95 ``stable/<version>`` and the base set to the upstream ``master`` branch.
96 Allow NetDef CI to complete its run and verify that all package builds were
97 successful.
98
99 8. Create a git tag for the version:
100
101 .. code-block:: shell
102
103 git tag -a frr-<version> -m "FRRouting Release <version>"
104
105 9. Push the commit and new tag.
106
107 .. code-block:: shell
108
109 git push origin stable/<version>:refs/head/stable/<version>
110 git push origin frr-<version>
111
112 10. Kick off the Release build plan on the CI system for the correct release.
113 Contact Martin Winter for this step. Ensure all release packages build
114 successfully.
115
116 11. Kick off the Snapcraft build plan for the release.
117
118 12. Acquire the release RPM binary packages from Martin Winter.
119
120 13. On GitHub, go to the <https://github.com/FRRouting/frr/releases>_ and click
121 "Draft a new release". Write a release announcement. The release
122 announcement should follow the template in
123 ``release-announcement-template.md``, located next to this document. Check
124 for spelling errors, and optionally (but preferably) have other maintainers
125 proofread the announcement text.
126
127 Attach **only** the binary RPM packages to the GitHub release using
128 GitHub's attachment functionality. Do not attach Debian packages. Do not
129 attach source tarballs - these will be generated and attached by GitHub
130 automatically. Do not publish the release yet.
131
132 14. Contact the current Debian maintainer for FRR to get new Debian packages
133 built and published on our APT repository at https://deb.frrouting.net/.
134 Ensure the webpage text is updated. Verify that new packages install
135 successfully on a vanilla Debian installation using the instructions on the
136 webpage.
137
138 15. Deploy Snapcraft release (after CI system finishes the tests for snapcraft
139 testplan).
140
141 16. Update the Read The Docs instance to being publishing documentation built
142 off the ``stable/<version>`` branch. Contact Quentin Young for this step.
143
144 17. Publish the GitHub release.
145
146 18. Clone the ``frr-www`` repository:
147
148 .. code-block:: shell
149
150 git clone https://github.com/FRRouting/frr-www.git
151
152 19. Add a new release announcement, using a previous announcement as template:
153
154 .. code-block:: shell
155
156 cp <old-version>-launch.md <version>-launch.md
157
158 Paste the GitHub release announcement text into this document, and **remove
159 line breaks**. In other words, this::
160
161 This is one continuous
162 sentence that should be
163 rendered on one line
164
165 Needs to be changed to this::
166
167 This is one continuous sentence that should be rendered on one line
168
169 This is very important otherwise the announcement will be unreadable on the
170 website.
171
172 Make sure to add a link to the GitHub releases page at the top.
173
174 Once finished, manually add a new entry into ``index.html`` to link to this
175 new announcement. Look at past commits to see how to do this.
176
177 20. Deploy the updated ``frr-www`` on the frrouting.org web server and verify
178 that the announcement text is visible.
179
180 21. Send an email to ``announce@lists.frrouting.org``. The text of this email
181 should include the text from the GitHub release.