Creating a New Module#

This tutorial walks you through creating a new Bazel module repository from the S-CORE template, publishing it to the registry, and making it available for other modules to depend on.

Note

Prerequisites Complete Getting Started first. You should be comfortable with the devcontainer and Bazel basics.

1. Create a repository from the template#

Go to eclipse-score/module_template and click Use this templateCreate a new repository.

Name it according to its purpose (e.g., my_component). The template provides:

  • Standard directory layout

  • .bazelrc with S-CORE registry configuration

  • Devcontainer setup

  • CI workflows

  • Pre-commit configuration

2. Clone and verify#

git clone https://github.com/eclipse-score/my_component.git
cd my_component

Open in the devcontainer and verify:

bazel build //...
bazel test //...

The template includes a minimal build target and test. Both should pass out of the box.

3. Add your code#

Replace the template placeholder with your actual module code. The standard layout:

my_component/
├── MODULE.bazel        # Module metadata and dependencies
├── BUILD.bazel         # Top-level build targets
├── src/
│   └── BUILD.bazel     # Library targets
└── test/
    └── BUILD.bazel     # Test targets

Declare dependencies on other S-CORE modules in MODULE.bazel:

bazel_dep(name = "some_other_module", version = "1.0.0")

4. Apply toolchains and policies#

Add the relevant toolchain and policy dependencies:

bazel_dep(name = "score_cpp_policies", version = "...")
bazel_dep(name = "bazel_cpp_toolchains", version = "...")

These provide the shared compiler configuration and lint baselines. See How-to: Code Quality for details.

5. Verify everything#

bazel build //...
bazel test //...
pre-commit run --all-files

6. Publish a release#

Create a GitHub Release with a semantic version tag (e.g., v0.1.0). Then follow the registry import process to make it available to consumers.

What you’ve accomplished#

You now have:

  • A new module repository following S-CORE conventions

  • Working build, tests, and pre-commit checks

  • Understanding of how to publish to the registry

Next steps#