Skip to content

CI: rolling vnext prerelease of the runtime on every merge to main#249

Merged
initializ-mk merged 1 commit into
mainfrom
ci/edge-rolling-prerelease
Jul 6, 2026
Merged

CI: rolling vnext prerelease of the runtime on every merge to main#249
initializ-mk merged 1 commit into
mainfrom
ci/edge-rolling-prerelease

Conversation

@initializ-mk

Copy link
Copy Markdown
Contributor

What

New .github/workflows/edge.yaml: on every push to main (and workflow_dispatch), build the release archives via goreleaser release --snapshot --clean and republish a fixed vnext prerelease pointing at the latest main commit, carrying the Linux runtime tarballs + checksums.

Why

The Initializ platform bakes the forge runtime into each agent image by fetching forge-Linux-<arch>.tar.gz from a GitHub release tag (forge-cli templates/Dockerfile.tmpl, default releases/latest). Tagged releases lag main, 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 latest is v0.16.0 (2026-07-01). Agents built today run v0.16.0, which has no remote-session-store client — they ignore FORGE_SESSION_STORE=remote and no sessions reach the platform. There's currently no way to test an unreleased runtime without cutting a real release.

This publishes a rolling vnext the platform can pin (AGENT_FORGE_VERSION=vnext in agent-builder, PR initializ/agent-builder#36) to validate unreleased runtime changes end-to-end.

Design notes

  • Snapshot build reuses .goreleaser.yaml, whose archive name_template has no version component → vnext assets are byte-identical to a real release, so the existing Dockerfile template fetches them unchanged.
  • Prerelease — never becomes latest. Tagged v* releases and agents pinned to a version are unaffected.
  • delete --cleanup-tag + create --target $GITHUB_SHA re-points the vnext tag at the newest main commit each run.
  • concurrency cancels superseded runs so the tag always reflects the tip of main.

Verify after merge

Push to main → the vnext release exists with the two Linux tarballs → set AGENT_FORGE_VERSION=vnext and rebuild an agent → its pod logs print session store: engaged remote backend and executions appear in the console.

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.
@initializ-mk initializ-mk merged commit 8dd2f8e into main Jul 6, 2026
9 checks passed
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