Split images/ into a separate repo now that #407 makes them optional at deploy time? #530
RonaldHensbergen
started this conversation in
Ideas
Replies: 1 comment 1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Context
Issue #407 proposes a per-module
image.source: build | registryconfigoption: when
source: registry, a module's Compose service pulls thescanned/signed image already built and published by
publish-images.yml(to GHCR and Docker Hub) instead of rebuilding from the local Dockerfile
under
images/.Once that lands, a production profile (
source: registryeverywhere)no longer needs the
images/directory, its Dockerfiles, or thebuild-images/publish-images.yml/image-security-scan machinery atcheckout time at all — it only needs the compiled
profiles/+modules/tree and network access to pull already-published, signedimages.
Question
Would it make sense to eventually split this repository into:
images/**, the Dockerfiles, image-specificrequirements files,
publish-images.yml,image-security-scan.yml,and the vulnerability-remediation SLA process (
docs/image-scanning.md,.trivyignore). This repo's only externally-visible output is a set ofsigned, versioned images on GHCR/Docker Hub.
images/) — owns the CDS CLIitself (
cli/**),modules/**,profiles/**,shared/**,workdirs/**, and consumes the published images by digest/tag viaimage.source: registrymodule config.Why this might be worth it
cli/,modules/, orprofiles/and currently still run through image-build-adjacent jobs(
build-images,smoke-test, Boot/E2E) even when no Dockerfile changed.Splitting removes that coupling for the CLI/config-only repo.
rebuild + SLA-driven patch cycle (
docs/image-scanning.md) that'sdecoupled from CLI/profile feature work; a separate repo would make that
boundary explicit instead of implicit.
finding today opens a
vuln-scanissue in this repo and requires a PRhere even though it's purely an OS/dependency patch unrelated to CDS
features (see [vuln-scan] HIGH/CRITICAL findings in cds-dagster #526–[vuln-scan] HIGH/CRITICAL findings in cds-dbt #528, just fixed). A dedicated images repo would keep
that traffic separate from CLI/feature PRs and issues.
contributors — image-security patches and CLI feature work have very
different review needs.
Why this might not be worth it (or not yet)
source: build(the default). Local dev/testneeds the Dockerfiles +
images/present in the same checkout as theprofile being iterated on, or dev workflows get slower/more awkward
(submodule/multi-repo checkout, or
cds get-style fetching of the imagesrepo).
(e.g. new module config that requires an image rebuild, like Add Alpine-based hardened variant for Dagster image (and later Superset) #372/Add selectable Dagster image variant (base/hardened) with restructured image layout #376's
image.variantsplit). Two repos means two PRs + a version-pin bump inbetween, adding coordination overhead for a project this size.
cadence, access boundaries) matter more with multiple contributors/teams;
for now the split may just add process overhead (two CI configs, two
issue trackers, cross-repo version pinning) without much practical
benefit.
cds get/cds initalready fetch profiles+modules independently of afull checkout (see the
extends-aware fetch logic added for Profile composition: support layered/extended profiles to reduce duplication #175), sothe "modules repo doesn't need images" use case is already partially
served without a full repo split — worth asking whether that alone is
"good enough."
Possible middle ground
images/**as an independently-tagged/releasedsubtree (e.g. its own GitHub Release cadence and CODEOWNERS boundary)
without a full repo split, revisiting a real split only if contributor
count or CI time actually become a pain point.
Ask
Does a split make sense now that #407 makes
images/optional atdeploy time, or is the middle-ground (independent versioning, same repo)
the better first step? Feedback and alternative approaches welcome.
All reactions