-
Notifications
You must be signed in to change notification settings - Fork 77
Description
🧱 Devcontainer Setup for Unified Development Environment
🎯 Goal
Provide a consistent development environment via Devcontainers to reduce onboarding friction and tooling issues across contributors. This image will be used by all SCORE-related repositories (dozens in total), so it must be robust, reusable, and actively maintained.
✅ Current Situation
We currently require a number of tools to be installed in addition to Bazel. This includes Python, Graphviz, Bazelisk, and shell autocompletion for Bazel. These tools are not always easy to install correctly across different systems, especially for new contributors.
🚀 Solution
Implement a reusable Devcontainer setup based on a Docker image that includes all required tools preinstalled. The image should be published to GitHub Container Registry (GHCR) and referenced via .devcontainer/devcontainer.json or .devcontainer.json in consuming repositories.
Target image name: ghcr.io/eclipse-score/devcontainer
The base image should include:
- Based on an extended Ubuntu image, quite certainly:
mcr.microsoft.com/devcontainers/python:1.2-3.12
- Preinstalled tools:
- Python (needed for Bazel formatting bug workaround)
- Graphviz
- Bazelisk (with current bazel version pre-downloaded)
- Shell autocompletion for Bazel
🛠️ Concrete Tasks
- Create a new GitHub repository (name:
eclipse-score/devcontainer) - Create a
Dockerfilethat installs all required tools - Add GitHub Actions workflow to:
- Build the image
- Optional: Tag it with semantic version (e.g.
v1.0.0) andlatest - Push to GHCR under
ghcr.io/eclipse-score/devcontainer
- Optional: Add typical metadata to the container
- Use the image from GHCR in
.devcontainer/devcontainer.jsonor.devcontainer.jsonin at least one repo (e.g.score) - Verify that all tools are functional inside the container
- Optional: Add documentation (
README.md) toeclipse-score/devcontainer
🔄 Considered Alternatives
Some tools could theoretically be installed via Bazel, but this was previously evaluated and rejected due to high implementation and maintenance cost. We chose to use system-level tools with clear documentation instead.
🧠 Notes
- The image will become the base for all development work across the SCORE ecosystem
- Keep it generic, stable, and easy to extend.
- This devcontainer will remain entirely optional, it's just meant to ease the pain of installing all the required tools.
📚 References
- Example:
eclipse-score/score/.devcontainer - Docs: Development Environment Setup
Metadata
Metadata
Assignees
Labels
Type
Projects
Status