Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bazel_common/score_modules_tooling.MODULE.bazel
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated as needed to reference OS page that was added in newer commit

Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ git_override(
bazel_dep(name = "score_platform")
git_override(
module_name = "score_platform",
commit = "bf8502071d750cb70d88f1cb5cfbf5e5e7407f27",
commit = "dc9930fe7e9bfcc5cbc89b85b287c3120b5e4f52",
remote = "https://github.com/eclipse-score/score.git",
)

Expand Down
191 changes: 191 additions & 0 deletions docs/how_to_release.rst
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Linked docs do not tell anything about the process community needs to follow step by step to create S-CORE release. This is a technical guide we will use internally within reference integration team to align.
Then, it will be presented during Monday's tech alignment and once approved can be included into process_description.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Integrating this in the release mgt process would be great once agreed.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The link goes not to the process_description, it goes to the PMP of score, so you could already have this document integrated there from the begin. If you integrate it later fine, but just describe it here, would not be binding in my opinion.
Workflows for Release management in General are here, that is process_description
https://eclipse-score.github.io/process_description/main/process_areas/release_management/release_workflow.html

Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
=================================
How to create a release of S-CORE
=================================

Definitions
-----------

========================== ====================================================
Role Description
========================== ====================================================
Reference Integration Team Prepare integration process
Module Maintainers Prepare Module's release candidate
Project Lead Guides the release process and leads decision making
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

at which step is QM supposed to do formal checks? Final release candidate approval + auto check in sign off file?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Final release candidate approval + auto check in sign off file?
Yes

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be replaced by TLs or Pls

========================== ====================================================

Process overview
----------------

Release interval between S-CORE Product Increments can be divided into two phases:

**Development phase (6 weeks) :**

#. Common release requirements definition
#. Features' implementations and improvements
#. Tooling release
#. Code freeze

**Integration phase (2 weeks) :**

#. Release branch creation
#. Integration of the Modules
#. Release candidate
#. Release creation

Common release requirements definition
--------------------------------------

At the beginning, the overall scope and general requirements for the Modules are discussed and
agreed upon within the S-CORE community, providing clear goals for what must be achieved.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tools for examples, where it is discussed, where it is documented, propose to update it here as it is delivered as part of the release
https://eclipse-score.github.io/score/main/score_tools/score_tools_evaluation_list.html

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Documented in an issue

The scope should define requirements such as:

* Tooling versions
* Used toolchains
* Supported platforms

rather than specific features' implementation scopes.
Based on the operating system definitions documented in the `Operating Systems<_collections/score_platform/docs/modules/os/operating_systems/docs/index.html>`_
the Reference Integration Team will only maintain functional/certifiable level OSs as part of the release,
while community OSs will be prepared and maintained by the OS module Maintainers. *Code freeze* applies to OSs as well.

.. note::

Performed by: Project Lead and S-CORE community

Features' implemntations and improvements
-----------------------------------------

During the development phase, the community works on new features and improvements to the Modules.
Changes are reviewed by Commiters and Module Maintainers.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It appears that continuous integration is only occurring at the code freeze/release branch stage. While I recognize this may reflect our current workflow, I wanted to confirm whether this is the approach we want to maintain?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, CI will run daily and in will notify modules about issues.

.. note::

Performed by: S-CORE community and Module Maintainers

Tooling release
---------------

S-CORE tools, toolchains and other dependencies which are listed in the following Bazel MODULE files:

* ``bazel_common/score_gcc_toolchains.MODULE.bazel``
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I miss cicd-workflows, devcontainers, platforms, rust_policy, cpp_policy, tooling...

* ``bazel_common/score_modules_tooling.MODULE.baze``
* ``bazel_common/score_qnx_toolchains.MODULE.bazel``
* ``bazel_common/score_rust_toolchains.MODULE.baze``
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* ``bazel_common/score_rust_toolchains.MODULE.baze``
* ``bazel_common/score_rust_toolchains.MODULE.bazel``


are released at the end of the development phase the latest.
During the integration phase, no changes other than necessary bug fixes are allowed to give time to the Modules to rebase
their dependencies and prepare their *code freeze*.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe refer to certain section of know_good.json so its clear.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I listed MODULE files instead, known_good doesn't have e.g. toolchains. Maybe we should also add it later when we will covert into config.json

.. note::

Performed by: Module Maintainers

Code freeze
-----------
At the end of development phase, each Module must provide a hash of the commit that represents a *code freeze*
and serves as a candidate for integration. The hash can be from the **main** or **dedicated release** branch.
Comment on lines +85 to +86
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will this be checked manually, that it truly is one of these two things?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Branch should be documented


.. note::

Performed by: Module Maintainers

Release branch creation
Copy link

@masc2023 masc2023 Mar 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in general, can we add a section about communication, where e.g. project lead announce officially start of the activities so the S-CORE community and other are informed?

Further once agreed, a simple table overview about the differente steps and responsible teams, etc. at the begin or end for the release cycle would help later to simplify the communication

-----------------------

The integration phase begins with the creation of a **release branch** in the ``reference_integration`` repository
originating from current **main**.

.. note::

Performed by: Reference Integration Team

Integration of the Modules
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need a section for creating a Release notes PR in the platform repo and then create the release branch. Also we should use a clear naming for the branch(link branching strategy DR)

--------------------------

Module Maintainers prepare a Pull Request to that branch with updates to the ``known_good.json`` file,
pointing to the hash of their *code freeze*. They may update other JSON fields for their Module as needed.
Automated workflows will build and test to provide clear feedback directly in the PR.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should also be a step for checking Quality, Safety and Security

If there are any issues, Module Maintainers can either push fixes to their **dedicated release** branch
and update the hash in the PR accordingly, or provide patches (see :ref:`ref_int_patching-label`).

.. note::

Performed by: Module Maintainers

Release candidate
-----------------

Once all Modules are merged with their *code freeze*, Module Maintainers create a tag on that exact hash following the S-CORE release process,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So this means the module makes a release branch of decides a hash from main.
It adds this to the known_good.json and if it's all green and merged THEN it makes a release based on that branch / hash, right?

provide release notes to the ``score_platform`` repository, and ensure that the new release is present in S-CORE's ``bazel_registry``.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The release notes are provided to the platform repository, is this correct?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should add here that there is a central platform pr for release notes where the release notes should be added. Also there should be a description what is part of the release(release letter) and send to the marketing team

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approval of the platform release notes should be done by PLs according to the PMP

The Reference Integration Team prepares a final Pull Request and replaces all hashes with the dedicated release versions.

This pull request has additional workflow checking that every Maintainer has approved the PR signing off their Module's release candidate.
There is an additional ``.rst`` file listing every Module and GitHub ID of the Maintainer responsible.

.. note::

Performed by: Reference Integration Team and Module Maintainers

Release creation
----------------

Once all previous steps are completed Reference Integration Team triggers the release creation workflow in ``release_integration``.
An automated verification process of the release begins which includes building, testing, deploying documentation and checking that
every Module has been correctly signed-off by its Maintainer. If any issue is found, the release creation process is stopped.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should describe what stopping mean

When successfully completed the release and its downloadable assets are ready for distribution.

.. note::

Performed by: Reference Integration Team


Opting out of a release
-----------------------

Module Maintainers may decide that their Module will not be released with a new version for the S-CORE Product Increment.
In that case currently integrated version can be used. However, they must still ensure that the Module remains compatible with
the S-CORE release and does not fail any workflows.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is only fallback and should not be the usual approach


If Module Maintainers cannot adapt to the newest release requirements or any S-CORE community member discovers a showstopper
for the upcoming release, they must communicate it promptly to the Project Lead and other community members.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TLs or PLs Project Lead does not exist

Following discussion and impact analysis, a decision is made regarding whether to postpone or skip the S-CORE release,
and the planning is updated accordingly.


Removing Module from Reference Integration
------------------------------------------

Currently following modules can be removed without an impact on the S-CORE release:

* ``score_feo``
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is not a good idea to list that. The goal should be to integrate everything.

* ``score_orchestrator``

Once excluded from the release and integration issue persists also on a ``reference_integration`` **main** branch,
Reference Integration Team will remove the Module completely.
It is up to Module Maintainers to fix and integrate the Module back into the main branch and later releases.


.. _ref_int_patching-label:

Patching Module
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Patching modules should not be needed or only should be in rare cases. Patches should be applied in the module repo itself.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but it's still left open as fallback. Patches then shall be integrated for next release in modules.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exacly, preferred way is to patch before release directly in repos but as a fallback we need to have a definition how to handle that.

---------------

Module Maintainers prepare ``.patch`` file(s) and place them in the ``/patches/MODULE_NAME`` directory.
The patch filename must clearly indicate what it addresses.
For multiple issues, it is preferred to create multiple patches rather than a single patch addressing all issues.

Target releases definition
--------------------------

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>`_,
the Reference Integration Team defines which OSs will be maintained as part of the release:

* **Functional/Certifiable level OSs** - maintained by the Reference Integration Team and included in the release
* **Community OSs** - prepared and maintained by the OS module Maintainers during the integration phase

Only changes to functional/certifiable level OSs are considered until the *code freeze*.
Community OS updates can be prepared by the OS Maintainer during the release phase if needed.

.. note::

Performed by: Reference Integration Team and OS module Maintainers
1 change: 1 addition & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,4 @@ Explore the documentation
:glob:

verification/*
how_to_release
2 changes: 1 addition & 1 deletion known_good.json
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@
},
"score_platform": {
"repo": "https://github.com/eclipse-score/score.git",
"hash": "bf8502071d750cb70d88f1cb5cfbf5e5e7407f27"
"hash": "dc9930fe7e9bfcc5cbc89b85b287c3120b5e4f52"
},
"score_bazel_platforms": {
"repo": "https://github.com/eclipse-score/bazel_platforms.git",
Expand Down
Loading