Skip to content

Commit 5ca94fd

Browse files
committed
integrate release process into release management plan
1 parent 235e08a commit 5ca94fd

File tree

3 files changed

+206
-229
lines changed

3 files changed

+206
-229
lines changed

docs/platform_management_plan/index.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ Platform Management Plan
3636
config_management
3737
tool_management
3838
release_management
39-
release_process
4039
problem_resolution
4140
vulnerability_management
4241
change_management

docs/platform_management_plan/release_management.rst

Lines changed: 206 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ This document implements parts of the :need:`wp__platform_mgmt`.
2828
Purpose
2929
+++++++
3030

31-
The release management plan describes how releases of the SW platform and modules are performed in the S-CORE project.
31+
The release management plan describes how releases of the SW platform and modules are performed in the S-CORE project. It
32+
starts with a general description of a release and its scope, then describes the continuous releases in an 8-week cycle.
3233

3334
Objectives and scope
3435
++++++++++++++++++++
@@ -39,6 +40,7 @@ Goal of this plan is to describe
3940
* which types of releases exist
4041
* how these are planned and executed
4142
* how they are identified
43+
* who is integrated and responsible
4244

4345
Approach
4446
++++++++
@@ -69,8 +71,8 @@ defined in :need:`doc__project_mgt_plan`.
6971
For an official release also consider `Eclipse Project Handbook - Releases <https://www.eclipse.org/projects/handbook/#release-releases>`_.
7072

7173

72-
Release Planning and Execution
73-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
74+
General Release Planning and Execution
75+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7476

7577
Generally release planning and execution is described in :need:`wf__rel_mod_rel_note` process.
7678
It is part of project planning and therefore also documented with the same means. Generally a release
@@ -81,7 +83,8 @@ Before every release there will be a phase in which, for the features to be rele
8183
updates will be allowed but only bug fixes, addition of tests and quality improvements.
8284
This period will be planned by the technical leads in the milestone planning. There is no general
8385
time-span defined for this, but for the first releases a period of four weeks is recommended as good practice.
84-
With increasing maturity of the modules it is expected that this period can be reduced.
86+
The continuous release for S-CORE will be discussed in the next section. With increasing maturity of the modules
87+
it is expected that this period can be reduced. Also when they are not part of the continuous releases.
8588

8689
As defined in the process, the releases on module and platform level need to be coordinated.
8790
Major version updates denote API incompatibility, so the modules in a platform release are expected to have the same
@@ -141,3 +144,202 @@ Identification
141144

142145
* Tag each release in the repository with the version number.
143146
* Format: vMAJOR.MINOR.PATCH, e.g., v1.3.0.
147+
148+
149+
Continuous Release Planning and Execution
150+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
151+
152+
Release interval (see :ref:`pmp_types_of_work_packages_and_structure`) between S-CORE Product Increments can be divided into two phases:
153+
154+
**Development phase (6 weeks) :**
155+
156+
#. Common release requirements definition
157+
#. Internal communication
158+
#. Features' implementations and improvements
159+
#. Tooling release
160+
#. Code freeze
161+
162+
**Integration phase (2 weeks) :**
163+
164+
#. Release branch creation
165+
#. Integration of the Modules
166+
#. Release notes
167+
#. Release candidate
168+
#. Release creation
169+
170+
Common release requirements definition
171+
--------------------------------------
172+
173+
At the beginning, the overall scope and general requirements for the Modules are discussed during
174+
Release Team Meeting and agreed upon within the S-CORE community, providing clear goals for what must be achieved.
175+
The scope should define minor requirements such as:
176+
177+
* Tooling versions
178+
* Used toolchains
179+
* Supported platforms
180+
181+
rather than specific features' implementation scopes.
182+
Full list of tools can be found in the :need:`doc__tool_evaluation_list`.
183+
The scope will be defined in Github issue with sub-issues for every participating Module to track progress.
184+
185+
Based on the operating system definitions documented in the :ref:`comp_doc_os`
186+
the Reference Integration Team will only maintain functional/certifiable level OSs as part of the release,
187+
while community OSs will be prepared and maintained by the OS module Maintainers. *Code freeze* applies to OSs as well.
188+
189+
.. note::
190+
191+
Performed by: Project Leads and S-CORE community
192+
193+
194+
Internal Communication
195+
----------------------
196+
197+
Project Leads present scope during Tech Alignment call for final discussion and then send a communication
198+
via mailing list to inform about the scope of upcomming release.
199+
200+
.. note::
201+
202+
Performed by: Project Leads
203+
204+
Features' implementations and improvements
205+
------------------------------------------
206+
207+
During the development phase, the community works on new features and improvements to the Modules.
208+
Changes are reviewed by Commiters and Module Maintainers.
209+
210+
.. note::
211+
212+
Performed by: S-CORE community and Module Maintainers
213+
214+
Tooling release
215+
---------------
216+
217+
S-CORE tools, toolchains and other dependencies which are listed in the following Bazel MODULE files
218+
located in reference integration repository:
219+
220+
* ``bazel_common/score_gcc_toolchains.MODULE.bazel``
221+
* ``bazel_common/score_modules_tooling.MODULE.bazel``
222+
* ``bazel_common/score_qnx_toolchains.MODULE.bazel``
223+
* ``bazel_common/score_rust_toolchains.MODULE.bazel``
224+
225+
are released at the end of the development phase the latest.
226+
During the integration phase, no changes other than necessary bug fixes are allowed to give time to the Modules to rebase
227+
their dependencies and prepare their *code freeze*.
228+
229+
.. note::
230+
231+
Performed by: Module Maintainers
232+
233+
Code freeze
234+
-----------
235+
At the end of development phase, each Module must provide a hash of the commit that represents a *code freeze*
236+
and serves as a candidate for integration. The hash can be from the **main** or **dedicated release** branch.
237+
238+
.. note::
239+
240+
Performed by: Module Maintainers
241+
242+
Release branch creation
243+
-----------------------
244+
245+
The integration phase begins with the creation of a **release branch** in the ``reference_integration`` repository
246+
originating from current **main**.
247+
248+
.. note::
249+
250+
Performed by: Reference Integration Team
251+
252+
Integration of the Modules
253+
--------------------------
254+
255+
Module Maintainers prepare a Pull Request to that branch with updates to the ``known_good.json`` file,
256+
pointing to the hash of their *code freeze*. They may update other JSON fields for their Module as needed.
257+
Automated workflows will build and test to provide clear feedback directly in the PR.
258+
If there are any issues, Module Maintainers can either push fixes to their **dedicated release** branch
259+
and update the hash in the PR accordingly, or provide patches (see :ref:`ref_int_patching-label`).
260+
261+
.. note::
262+
263+
Performed by: Module Maintainers
264+
265+
Release notes
266+
-------------
267+
268+
Project Leads create a branch ``release/version`` with new release notes in ``score_platform`` repository following template: :need:`doc__platform_release_note`.
269+
Module Maintainers create a Pull Request to that branch with updates to the release notes,
270+
describing the changes in their Module for the release.
271+
Once all Modules are updated Project Leads approve the release notes and create ``score_platform`` release.
272+
273+
.. note::
274+
275+
Performed by: Module Maintainers and Project Leads
276+
277+
Release candidate
278+
-----------------
279+
280+
Once all Modules are merged with their *code freeze*, Module Maintainers create a tag on that exact hash following the S-CORE release process,
281+
and ensure that the new release is present in S-CORE's ``bazel_registry``.
282+
The Reference Integration Team prepares a final Pull Request and replaces all hashes with the dedicated release versions.
283+
284+
This pull request has additional workflow checking that every Maintainer has approved the PR signing off their Module's release candidate.
285+
The approval of the Project Lead is required and from the Quality Manager for the formal aspects as well.
286+
There is an additional ``.rst`` file listing every Module and GitHub ID of the Maintainer responsible.
287+
288+
.. note::
289+
290+
Performed by: Reference Integration Team and Module Maintainers
291+
292+
Release creation
293+
----------------
294+
295+
Once all previous steps are completed Reference Integration Team triggers the release creation workflow in ``release_integration``.
296+
An automated verification process of the release begins which includes building, testing, deploying documentation and checking that
297+
every Module has been correctly signed-off by its Maintainer. If any issue is found, the release creation process is stopped.
298+
Once the process is aborted, the Reference Integration Team investigates the issue and works with the relevant Module Maintainer to fix it
299+
or if the issue is severe decides, together with the Project Leads, to postpone the release. If the issue is fixed, the release creation process can be triggered again.
300+
When successfully completed the release and its downloadable assets are ready for distribution.
301+
302+
.. note::
303+
304+
Performed by: Reference Integration Team
305+
306+
307+
Opting out of a release
308+
-----------------------
309+
310+
Module Maintainers may decide that their Module will not be released with a new version for the S-CORE Product Increment.
311+
In that case currently integrated version can be used. However, they must still ensure that the Module remains compatible with
312+
the S-CORE release and does not fail any workflows.
313+
314+
If Module Maintainers cannot adapt to the newest release requirements or any S-CORE community member discovers a showstopper
315+
for the upcoming release, they must communicate it promptly to the Project Leads and other community members.
316+
Following discussion and impact analysis, a decision is made regarding whether to postpone or skip the S-CORE release,
317+
and the planning is updated accordingly.
318+
319+
.. _ref_int_patching-label:
320+
321+
Patching Module
322+
---------------
323+
324+
Module Maintainers prepare ``.patch`` file(s) and place them in the ``/patches/MODULE_NAME`` directory.
325+
The patch filename must clearly indicate what it addresses.
326+
For multiple issues, it is preferred to create multiple patches rather than a single patch addressing all issues.
327+
328+
A patch might be need to fix issues after the release of the module is allready in bazel registry and there is
329+
no time for another release. Or if its only minor and it's decided to avoid therefore another release.
330+
331+
Target releases definition
332+
--------------------------
333+
334+
Based on the operating system definitions documented in the `OS module <https://eclipse-score.github.io/score/main/modules/os/operating_systems/docs/index.html>`_,
335+
the Reference Integration Team defines which OSs will be maintained as part of the release:
336+
337+
* **Functional/Certifiable level OSs** - maintained by the Reference Integration Team and included in the release
338+
* **Community OSs** - prepared and maintained by the OS module Maintainers during the integration phase
339+
340+
Only changes to functional/certifiable level OSs are considered until the *code freeze*.
341+
Community OS updates can be prepared by the OS Maintainer during the release phase if needed.
342+
343+
.. note::
344+
345+
Performed by: Reference Integration Team and OS module Maintainers

0 commit comments

Comments
 (0)