Getting Started¶
A step-by-step walkthrough for new S-CORE contributors. By the end of this tutorial, you will have a working development environment, a successful build, and passing tests.
What you'll need¶
- GitHub account with access to the eclipse-score organization
- VS Code (or another devcontainer-capable IDE)
- Docker installed and running
1. Clone a repository¶
Pick a module repository to work with. For this tutorial, we use module_template:
git clone https://github.com/eclipse-score/module_template.git
cd module_template
2. Open in devcontainer¶
Open the cloned repository in VS Code. When prompted, click Reopen in Container.
The devcontainer image (ghcr.io/eclipse-score/devcontainer) includes all required tooling: Bazel, Python, pre-commit, language toolchains, and more.
If VS Code does not prompt automatically, open the command palette (Ctrl+Shift+P) and select Dev Containers: Reopen in Container.
3. Verify your environment¶
Run these commands inside the devcontainer:
bazel version
python3 --version
pre-commit --version
All three should succeed. If any fail, the devcontainer image may need rebuilding — ask in #score-infrastructure.
4. Build everything¶
bazel build //...
This compiles all targets in the repository. On the first run, Bazel downloads external dependencies — this takes a few minutes. Subsequent builds are fast.
5. Run all tests¶
bazel test //...
You should see all tests pass. If a test fails in a clean clone, it's a known issue — report it.
6. Set up pre-commit hooks¶
pre-commit install
This configures git hooks that check formatting and hygiene before each commit.
Verify by running all checks manually:
pre-commit run --all-files
What you've accomplished¶
You now have:
- A working devcontainer environment
- A successful Bazel build
- Passing tests
- Pre-commit hooks catching issues before they reach CI
Next steps¶
- Your First Pull Request — Make a change and get it merged
- How-to: Building with Bazel — Registry configuration and dependency management
- How-to: Testing — Test frameworks, coverage, and sanitizers