feat: allow independently-built component images - #53
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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-imagerequires 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:
virtualwindowprototype/**,docker/**,Dockerfilevirtualwindow-configconfig-service/**These components change independently and are almost never built by the same commit — right now they are pinned 5 commits apart (
sha-ca57025andsha-dedb4c2). Under the strict rule the repo simply could not be released.The fix
require-same-commit, defaulttrueso Atlas keeps its protection. Where it isfalse, 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.