Skip to content

feat: allow independently-built component images - #53

Merged
cshuttle merged 1 commit into
mainfrom
feat/independent-component-images
Aug 4, 2026
Merged

feat: allow independently-built component images#53
cshuttle merged 1 commit into
mainfrom
feat/independent-component-images

Conversation

@cshuttle

@cshuttle cshuttle commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Third repo, third finding — and again a guard that was right for the case it was written against and wrong for the next one.

The problem

release-image requires every image in a release to resolve to one build commit. That is correct for Atlas: one workflow builds the SPA and its sidecar together, so a mismatch means a half-updated pair shipping under a single version.

VirtualWindow is built differently. Two workflows, disjoint path filters:

Image Built from
virtualwindow prototype/**, docker/**, Dockerfile
virtualwindow-config config-service/**

These components change independently and are almost never built by the same commit — right now they are pinned 5 commits apart (sha-ca57025 and sha-dedb4c2). Under the strict rule the repo simply could not be released.

The fix

require-same-commit, default true so Atlas keeps its protection. Where it is false, each image is still verified against this branch's history — the check that the image came from here and not a stale or foreign build is untouched — and only the "all from one commit" constraint is dropped.

The tag then lands on the newest resolved commit. The oldest would name a commit that predates code actually shipped in the release.

A release of such a repo honestly means "SPA built at X plus config built at Y", which is what a multi-component repo releasing as a unit is.

The same-commit requirement assumed one workflow builds every image in a
release, which is true for Atlas and false for VirtualWindow: its SPA and its
config service are built by separate path-filtered workflows, so they are
almost never built by the same commit — today they are pinned 5 commits apart.
Requiring one commit would make that repo unreleasable.

Keep the check as the default, because for an app and its sidecar a mismatch
means a half-updated pair shipping under one version. Add require-same-commit
so a repo of independent components can opt out; each image is still verified
against the branch's history, and the tag lands on the newest resolved commit
rather than the oldest, which would name a commit predating shipped code.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@cshuttle
cshuttle merged commit 2c069c8 into main Aug 4, 2026
7 checks passed
@cshuttle
cshuttle deleted the feat/independent-component-images branch August 4, 2026 14:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant