CI: rolling vnext prerelease of the runtime on every merge to main#249
Merged
Conversation
Tagged releases (v*) can lag main by days, so a runtime change merged but unreleased — e.g. the remote session store (#243/#244) — is invisible to deployed Initializ agents even after the platform side ships it: the agent image pulls the forge-Linux-<arch>.tar.gz from `releases/latest`, which stays on the last tag. Add edge.yaml: on push to main, build the same archives via goreleaser --snapshot (reusing .goreleaser.yaml, so names are byte-identical) and republish a fixed `vnext` PRERELEASE pointing at the latest main commit. agent-builder can then pin AGENT_FORGE_VERSION=vnext to test unreleased runtime changes end-to-end. It is a prerelease and never becomes `latest`, so tagged releases and version-pinned agents are unaffected.
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.
What
New
.github/workflows/edge.yaml: on every push tomain(andworkflow_dispatch), build the release archives viagoreleaser release --snapshot --cleanand republish a fixedvnextprerelease pointing at the latestmaincommit, carrying the Linux runtime tarballs + checksums.Why
The Initializ platform bakes the forge runtime into each agent image by fetching
forge-Linux-<arch>.tar.gzfrom a GitHub release tag (forge-clitemplates/Dockerfile.tmpl, defaultreleases/latest). Tagged releases lagmain, so a runtime feature that's merged but unreleased is silently absent from deployed agents even after the platform side ships it.Concretely: the remote session store (#243/#244) landed on main 2026-07-06, but
latestisv0.16.0(2026-07-01). Agents built today run v0.16.0, which has no remote-session-store client — they ignoreFORGE_SESSION_STORE=remoteand no sessions reach the platform. There's currently no way to test an unreleased runtime without cutting a real release.This publishes a rolling
vnextthe platform can pin (AGENT_FORGE_VERSION=vnextin agent-builder, PR initializ/agent-builder#36) to validate unreleased runtime changes end-to-end.Design notes
.goreleaser.yaml, whose archivename_templatehas no version component →vnextassets are byte-identical to a real release, so the existing Dockerfile template fetches them unchanged.latest. Taggedv*releases and agents pinned to a version are unaffected.delete --cleanup-tag+create --target $GITHUB_SHAre-points thevnexttag at the newest main commit each run.concurrencycancels superseded runs so the tag always reflects the tip of main.Verify after merge
Push to main → the
vnextrelease exists with the two Linux tarballs → setAGENT_FORGE_VERSION=vnextand rebuild an agent → its pod logs printsession store: engaged remote backendand executions appear in the console.