Integration Process#

This document is a step-by-step how-to for module owners who want to integrate their own S-CORE module into the Reference Integration — whether for the first time, when bringing it back after an exclusion, or to make it part of the S-CORE releases in general.

It walks you through everything from registering the module in known_good.json over wiring it into the Bazel build, the showcases, the images and the CLI, up to adding it to the CI/CD pipelines and the consolidated reporting (documentation, coverage and verification reports).

What “integration” means here#

The Reference Integration is a single Bazel (bzlmod) build that pulls every S-CORE module together at a defined commit, builds them against each other and runs their tests, showcases and reports.

Integrating a module is incremental: each step below builds on the previous one and extends the reach of your module a little further into the integration. You climb the ladder only as far as your module needs — a pure library may stop after it builds in-tree, while a module with a runnable example goes all the way to running on every target platform and being exercised by integration tests.

The chapters that follow walk this ladder in order. Stop at whatever rung makes sense for your module.

Prerequisites#

Before you start, make sure that:

  • Your module lives in its own GitHub repository under the eclipse-score organization and is a bzlmod module, i.e. it has a top-level MODULE.bazel with a module(name = "score_<your_module>") declaration.

  • The module name follows the score_<name> convention (e.g. score_communication). The same name is used as the Bazel bazel_dep / repository name (@score_<name>//...).

  • Your module is registered in the S-CORE Bazel registry so that it can be resolved as a bazel_dep during the integration.

  • The module builds and tests pass standalone on all four currently supported target platforms: Linux x86_64, QNX 8 x86_64, Red Hat AutoSD x86_64 and EB corbos Linux (Safety Apps) aarch64.

  • You know the commit hash you want to pin (the integration always pins an exact commit, never a floating branch).

The integration steps#

Work through the chapters in order — each one extends the reach of your module a little further into the integration: