ci: pin linux build runners to ubuntu-22.04#9
Merged
jh-lee-cryptolab merged 2 commits intoJun 2, 2026
Conversation
Pin the linux build/release matrix runners from ubuntu-latest (24.04) and ubuntu-24.04-arm to ubuntu-22.04 / ubuntu-22.04-arm across the llama-server and binary build workflows. Building on 22.04 links against an older glibc, so the shipped llama-server and runed binaries stay compatible with older distros than building on 24.04 would allow. The publish job is left on ubuntu-latest since it only assembles artifacts and creates the release (no compiled output). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
redcourage
approved these changes
Jun 2, 2026
a7905c7 to
72c8ad4
Compare
couragehong
approved these changes
Jun 2, 2026
Two related cleanups on top of the ubuntu-22.04 runner pin:
1. Encode the build OS in artifact names so the glibc/SDK baseline is
visible and cacheable, read from the running image (RUNNER_OS +
/etc/os-release / sw_vers) rather than the runner label (which can be
a rolling alias like ubuntu-latest):
- llama-server GHCR OCI tag:
<ref>-<os>-<arch> -> <ref>-<os-type>-<os-version>-<arch>
e.g. b9352-ubuntu-2204-amd64 / b9352-mac-14-arm64
An OS bump now busts the cache and forces a fresh build instead of
reusing a binary linked against an incompatible glibc.
- release tarball (Makefile, via OS_LABEL passed by release.yaml):
runed-<ver>-<goos>-<goarch>.tar.gz
-> runed-<ver>-ubuntu-2204-amd64.tar.gz / runed-<ver>-mac-14-arm64.tar.gz
OS_LABEL defaults to GOOS so local `make release-tarball` is unchanged.
2. Drop Windows from CI for now: remove the windows-latest matrix entries
and all windows-only steps from build-llama.yml and release.yaml (the
llama-server.exe build/pull/push and the release zip), and drop the
now-empty `*.zip` from the publish upload glob. Stale Windows comments
in the Makefile are removed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
72c8ad4 to
815d086
Compare
This was referenced Jun 2, 2026
jh-lee-cryptolab
added a commit
to CryptoLabInc/rune-mcp
that referenced
this pull request
Jun 2, 2026
rune-mcp links envector-go-sdk via CGO, so the linux release binaries are dynamically linked against the build image's glibc. Building on ubuntu-latest (24.04, glibc 2.39) makes them fail to run on older distros. - Pin the linux build matrix to ubuntu-22.04 / ubuntu-22.04-arm (was ubuntu-latest / ubuntu-24.04-arm) for a broad glibc baseline. macos-14 and the publish job are unchanged. - Name release assets by the build OS read from the running image: rune-mcp-<os>-<arch> -> rune-mcp-ubuntu-2204-<arch> / rune-mcp-mac-14-arm64, so the glibc/SDK baseline is visible. The publish file list is globbed (dist/rune-mcp-*) instead of hardcoding the old os-arch names. Matches the same scheme applied to runed (CryptoLabInc/runed#9). The rune CLI's manifest generation is updated in tandem to point at the new names.
jh-lee-cryptolab
added a commit
to CryptoLabInc/rune
that referenced
this pull request
Jun 2, 2026
runed and rune-mcp now name their release assets by build OS (runed-<ver>-ubuntu-2204-amd64.tar.gz / runed-<ver>-mac-14-arm64.tar.gz, rune-mcp-ubuntu-2204-amd64, ...) instead of GOOS, to encode the glibc baseline — see CryptoLabInc/runed#9 and the matching rune-mcp change. The manifest generator hardcoded the old runed-<ver>-<goos>-<arch>.tar.gz and rune-mcp-<goos>-<arch> names, so it would build dead URLs and fail to read the sha256 entries. Resolve each platform's asset from the downloaded sha256 / checksums.txt files instead: map the manifest platform's GOOS to the os-type the downstream repos emit (linux -> ubuntu, darwin -> mac) and glob the exact OS version from the filenames, so a downstream runner bump needs no change here. The manifest platform keys (linux-amd64, darwin-arm64, ...) — the GOOS-GOARCH keys the rune CLI looks up at runtime — are unchanged.
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
Three related CI changes, building on each other:
Pin linux build runners to ubuntu-22.04 / ubuntu-22.04-arm (was
ubuntu-latest= 24.04,ubuntu-24.04-arm) acrossbuild.yml,build-llama.yml,release.yaml. Building on the older glibc keeps the shippedllama-server/runedbinaries compatible with older distros.Name artifacts by the build OS, read from the running image (
RUNNER_OS+/etc/os-release/sw_vers) rather than the runner label (which can be a rolling alias):<ref>-<os>-<arch>→<ref>-<os-type>-<os-version>-<arch>(e.g.b9352-ubuntu-2204-amd64,b9352-mac-14-arm64). An OS bump now busts the cache and forces a fresh build instead of pulling a binary linked against an incompatible glibc.runed-<ver>-<goos>-<goarch>.tar.gz→runed-<ver>-ubuntu-2204-amd64.tar.gz/runed-<ver>-mac-14-arm64.tar.gz(viaOS_LABELin the Makefile, defaulting toGOOSso local builds are unchanged).Drop Windows from CI for now — remove the
windows-latestmatrix entries and all windows-only steps (llama-server.exe build/pull/push, the release.zip), and drop the now-empty*.zipfrom the publish glob.Why the OS-version tag is required
The OCI tag was keyed only on
<ref>-<os>-<arch>, so the build baseline was invisible to the cache. Pinning the runner alone was not enough: existing tags built on 24.04 still matched, so the workflow pulled the old binary, which needsGLIBC_2.38the 22.04 runner (glibc 2.35) lacks:Resulting release assets
Notes
macos-14runner unchanged; thepublishjob stays onubuntu-latest(no compiled output).llama-server-<os>-<arch>) are unchanged, so the vendor → build/release consumers are unaffected.