Repository navigation
ci(release): build execution images on main, not on every release - #2435
Merged
Merged
Conversation
rdimitrov
force-pushed
the
ci/release-light-path
branch
5 times, most recently
from
October 20, 2026 12:26
98dade1 to
c86f576
Compare
rdimitrov
force-pushed
the
ci/release-light-path
branch
3 times, most recently
from
October 20, 2026 15:31
50372e3 to
329c72d
Compare
rdimitrov
marked this pull request as ready for review
October 20, 2026 15:32
rdimitrov
force-pushed
the
ci/release-light-path
branch
from
October 20, 2026 15:55
329c72d to
049fed9
Compare
rdimitrov
force-pushed
the
ci/release-light-path
branch
from
October 21, 2026 19:59
049fed9 to
1a4e208
Compare
Every release dispatch spent about 3.5 minutes building both execution images for amd64 and arm64 without publishing, four cold Go builds, before it could open the release PR. The base-image pin check, which takes seconds, stays in the preflight and again at tag and publish time. execution-images.yml now runs that same no-publish build on every push to main, as ToolHive and the registry server build their images, so a broken provider Dockerfile or arm64 build surfaces within minutes of the merge that causes it, before a release is cut from it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rdimitrov
force-pushed
the
ci/release-light-path
branch
from
October 21, 2026 20:15
1a4e208 to
5a73b6b
Compare
Merged
2 tasks
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.
Why
Every release dispatch spent about 3.5 minutes in
create-release-pr.yml's preflight before it could open the release PR. The preflight built both execution images (provider and workload) for amd64 and arm64 without publishing them: four cold Go builds. Opening the PR itself takes about 20 seconds. ToolHive and the registry server have no such step; they build their images on every push to main.The build does guard against something real.
release.ymlpublishes these images only after the tag exists, and a published tag can't be moved. It's also the only pre-release build of the provider Dockerfile, because the Kind suites build the provider with ko, and the only arm64 build of either image.What
create-release-pr.yml: the preflight drops the image build. It keeps the base-image pin check (about 2 seconds), which also runs again at tag time and inrelease.yml. Opening a release PR goes from about 5 minutes to under a minute.execution-images.yml: the same no-publish amd64 + arm64 build of both images, on every push to main (docs-only pushes excluded) and on manual dispatch. A broken provider Dockerfile or arm64 build shows up within minutes of the merge that causes it, before a release is cut from it.release-workflow-graph_test.py: now asserts that the build is gone from the release-PR workflow and present, after the pin check, inexecution-images.yml.Trade-off: the break surfaces on main after merge, not on the PR. That matches ToolHive and the registry server. It costs about 4 runner-minutes per merge, off the critical path.
Testing
release-workflow-graph_test.pypasses. Restoring main's release-PR workflow, which still has the build, makes it fail.release-tag-guard_test.shandtask docspass.🤖 Generated with Claude Code