Skip to content

setup devcontainer #1256

@AlexanderLanin

Description

@AlexanderLanin

🧱 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 Dockerfile that installs all required tools
  • Add GitHub Actions workflow to:
    • Build the image
    • Optional: Tag it with semantic version (e.g. v1.0.0) and latest
    • Push to GHCR under ghcr.io/eclipse-score/devcontainer
  • Optional: Add typical metadata to the container
  • Use the image from GHCR in .devcontainer/devcontainer.json or .devcontainer.json in at least one repo (e.g. score)
  • Verify that all tools are functional inside the container
  • Optional: Add documentation (README.md) to eclipse-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

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions