-
Notifications
You must be signed in to change notification settings - Fork 4
Reapply "feat: move from two-track to three-track container build (#115)" (#126) #138
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
base: master
Are you sure you want to change the base?
Conversation
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 reapplies the three-track container build approach from PR #115, which was previously reverted in PR #126 due to image bloat issues. The key fix is changing builder_concretization_custom to derive from builder_concretization_default instead of builder_installation_default, preventing the custom stage from inheriting installed packages and causing a full rebuild.
Changes:
- Updated documentation to describe three-track build approach (concretization track, installation track, runtime track)
- Restructured Dockerfile stages to separate concretization from installation in the builder track
- Modified CI workflow to test builder_concretization_custom stage earlier for cuda and tf environments
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| docs/architecture.md | Updated mermaid diagram and description from two-track to three-track build approach, showing separate concretization and installation tracks |
| containers/eic/Dockerfile | Changed builder_concretization_custom to derive from builder_concretization_default (line 150), consolidated runtime stages by removing intermediate concretization/installation split |
| .github/workflows/build-push.yml | Updated target from builder_concretization_default to builder_concretization_custom for cuda and tf environments to enable earlier concretization testing |
| ## builder track: runtime track: | ||
| ## concretization: installation: concretization/installation: | ||
| ## --------------------------------------------------------------------------------------- | ||
| ## builder_image runtime_image | ||
| ## builder_concretization_default | ||
| ## builder_installation_default -> runtime_concretization_default (copy spack.lock) | ||
| ## \-> runtime_installation_default (from buildcache) | ||
| ## builder_concretization_custom | ||
| ## builder_installation_custom -> runtime_concretization_custom (copy spack.lock) | ||
| ## \-> runtime_installation_custom (from buildcache) | ||
| ## \-> builder_installation_default | ||
| ## runtime_default | ||
| ## (copy spack.lock from builder_installation_default) | ||
| ## (install via buildcache) | ||
| ## \-> builder_concretization_custom | ||
| ## \-> builder_installation_custom | ||
| ## \-> runtime_custom | ||
| ## (copy spack.lock from builder_installation_custom) | ||
| ## (install via buildcache) |
Copilot
AI
Jan 18, 2026
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.
The ASCII diagram is misleading about the dependency structure. Line 30 shows ## \-> builder_concretization_custom which suggests it derives from builder_image, but it actually derives from builder_concretization_default (as shown in line 150). The arrow should be indented to show it's a continuation from builder_concretization_default on line 25, similar to how builder_installation_default is shown on line 26.
Briefly, what does this PR introduce?
This PR reverts commit 161a8ec in #126, and reapplies commit 4e49b9c in #115.
What kind of change does this PR introduce?