Repository navigation
fix(runner): serve action archives from a local cache and make the compose setup generic - #25
Merged
Merged
Conversation
…mpose setup generic Ephemeral runners download every action archive on every job, and several runners behind one IP hit codeload's 429 limit in "Set up job". The runner reads ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE before downloading but never writes it, so: - mount a shared runner-action-cache volume read-only into every runner and set the env var; - let the pruner fill it hourly, authenticated as the GitHub App, from the `uses:` refs in PREFETCH_SOURCES plus PREFETCH_EXTRA (opt-in, skipped when neither is set), with an LRU cap; - `pruner.sh prefetch` warms it once after a rollout. Make the setup usable by any organization: neutral defaults (LABELS=docker, RUNNER_IMAGE overridable, empty PREFETCH_SOURCES), one generic .env.example, hosts/no-caches.compose.yml for small hosts, and a shorter README that explains how to fit the setup to different hosts and labels. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
azlekov
force-pushed
the
fix/runner-action-archive-cache
branch
from
October 15, 2026 14:27
0456592 to
92c7808
Compare
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.
Problem
Ephemeral runners download every
uses:action archive on every job. Several runners behind one IP hit codeload's rate limit and fail in "Set up job":Change
ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE/<owner>_<repo>/<sha>.tar.gzbefore downloading, but never writes it (Runner.Worker/ActionManager.cs). A sharedrunner-action-cachevolume is mounted read-only into every runner. Theprunerfills it hourly, authenticated as the GitHub App, from theuses:refs inPREFETCH_SOURCESplusPREFETCH_EXTRA, and caps it at 2 GiB. It is opt-in: with neither set, nothing happens.pruner.sh prefetchwarms it once.LABELS=docker, overridableRUNNER_IMAGE, emptyPREFETCH_SOURCES), one generic.env.example, andhosts/no-caches.compose.ymlfor small hosts (replaces the per-host examples andhosts/rpi5.compose.yml).Rollout on existing hosts
git pull && docker compose pull && docker compose up -dPREFETCH_SOURCES(e.g. the repo holding your reusable workflows) and/orPREFETCH_EXTRAin.env, thendocker compose run --rm pruner prefetch.hosts/rpi5.compose.ymlmust switchCOMPOSE_FILEtodocker-compose.yml:hosts/no-caches.compose.yml.Verification
docker compose configpasses for the base file and with the no-caches override.shellcheckandbash -nare clean.prefetch_onecall cachedactions/checkout@v4asactions_checkout/<sha>.tar.gz, and a repeat call skipped the download.Copied action archive ...).🤖 Generated with Claude Code