-
Notifications
You must be signed in to change notification settings - Fork 74
docs: add DR-003-infra for devcontainer strategy #1845
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: add DR-003-infra for devcontainer strategy #1845
Conversation
|
The created documentation from the pull request is available at: docu-html |
795d847 to
30842f9
Compare
Add design decision record for hybrid devcontainer approach in S-CORE. Provides rationale, options, and next steps for standardizing development environments.
30842f9 to
fb7c972
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces a comprehensive Design Decision Record (DR-003-infra) that establishes a standardized devcontainer strategy for S-CORE development environments. The document addresses the challenge of providing consistent, efficient development environments that work well both locally and in CI/CD pipelines.
- Proposes a hybrid approach using a base devcontainer with optional service-specific extensions
- Balances developer experience needs with CI/CD performance requirements
- Establishes clear guidelines for container layering and usage patterns
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
It's not really in the scope of this document, but as a door for layer local side effects, maybe it should be mentioned that additional layers should not be required for CI/CD. The CI layer is wholly responsible for builds and required tooling, which should be brought in via Bazel whenever possible? |
opajonk
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with the general "Hybrid Approach" idea. However, I would suggest to use a base layer (built in the devcontainer repository), which contains all tools that also CI requires.
If there are then tools which are required only for development of certain repositories, and which really add a significant amount of data (!! I would not do this for just a few MB, since it adds overhead and complexity !!), we can create (or re-use existing) devcontainer features.
An example can be seen in the devcontainer repository itself. The devcontainer.json there constructs the local devcontainer (used for developing the s-core devcontainer) from "default" building blocks:
javascript-node:0-18acts as base imageghcr.io/devcontainers/features/gitetc. are additional "layers"- These additional layers are then on-the-fly added on top of the base image.
However, we must keep in mind:
- Everything that is downloaded from "the internet" may stop existing at any point in time, killing our development environment and builds. We already had this, with the downtime of the Arm GitLab.
- Everything that is downloaded from "the internet" may be used for injecting "unwanted things" into the supply chain. This applies to dynamic features, but also for Bazel, its modules and additional files, Visual Studio Code plugins, etc. It is much less risky to use/audit/archive pre-built images, than an on-the-fly created development & build environment. Food for thought...
|
@olivembo Is that something you want to drive forward? |
Incorporate review feedback to improve devcontainer strategy: - Switch from image layering to devcontainer features approach - Add explicit performance requirements and considerations - Address supply chain security concerns - Clarify network dependency limitations for features - Emphasize consistency between local and CI/CD environments
I just adapted the DR-003 document. Agree to the points. The "downloaded from the internet" problem, you have imho in any case. Maybe in the dynamic features more than with the usage of prebuild images, but that should be treated independent of this DR. |
c10935a to
02a4c2f
Compare
dcalavrezo-qorix
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In terms of storage, the free GH runners provide approx. 14 GB of space. We're currently on the verge on maxing that out for some repos. Not sure what will happen after introducing containerized builds in CI.
We would drive it from ETAS side |
* docs: add DR-003-infra devcontainer strategy Add design decision record for hybrid devcontainer approach in S-CORE. Provides rationale, options, and next steps for standardizing development environments. * docs: refine DR-003-infra based on feedback Incorporate review feedback to improve devcontainer strategy: - Switch from image layering to devcontainer features approach - Add explicit performance requirements and considerations - Address supply chain security concerns - Clarify network dependency limitations for features - Emphasize consistency between local and CI/CD environments * docs: corrected the paragraphs where the term "service" was used. * docs: adapted according to review comments
Summary
This PR adds Design Decision Record DR-003-infra that outlines the strategy for standardizing S-CORE development environments using devcontainers.
Changes
docs/design_decisions/DR-003-infra.mdwith comprehensive analysis of devcontainer approachesKey Decisions
Benefits
This addresses the infrastructure standardization efforts and provides a clear path forward for S-CORE development environment consistency.
Testing